最后更新于:2026年3月11日 下午
第1讲:函数 🔑 知识点讲解 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 函数是代码复用的基本单位。 格式: 返回类型 函数名(参数列表) { 函数体 return 返回值 } 关键点:1. 值传递:函数内修改形参不影响实参2. 地址传递:传指针可以修改实参3. 数组传参:数组名即地址,函数内可以修改原数组4. 递归:函数调用自身,必须有终止条件 函数声明(原型): 如果函数定义在 main 之后,需要在前面声明。 int add (int a, int b) ;
✏️ 练习:递归求斐波那契数列
题目 :用递归和非递归两种方式实现斐波那契数列第 n 项。 F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2)
输入 :10输出 :55
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int fib_recursive (int n) { if (n <= 2 ) return 1 ; return fib_recursive (n - 1 ) + fib_recursive (n - 2 ); }int fib_iterative (int n) { if (n <= 2 ) return 1 ; int a = 1 , b = 1 , c; for (int i = 3 ; i <= n; i++) { c = a + b; a = b; b = c; } return b; }int main () { int n; scanf ("%d" , &n); printf ("递归: %d\n" , fib_recursive (n)); printf ("迭代: %d\n" , fib_iterative (n)); return 0 ; }
⚠️ 面试高频问题 :递归的时间复杂度为 O(2^n),可以通过 记忆化 、动态规划 优化为 O(n)。