C语言递归函数 #
一、递归概述 #
1.1 什么是递归 #
函数直接或间接调用自身。
1.2 递归要素 #
- 基准条件:终止递归的条件
- 递归条件:继续递归的条件
二、递归示例 #
2.1 阶乘 #
c
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
printf("5! = %d\n", factorial(5));
return 0;
}
2.2 斐波那契数列 #
c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
for (int i = 0; i < 10; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
2.3 汉诺塔 #
c
#include <stdio.h>
void hanoi(int n, char from, char to, char aux) {
if (n == 1) {
printf("移动盘子1从%c到%c\n", from, to);
return;
}
hanoi(n - 1, from, aux, to);
printf("移动盘子%d从%c到%c\n", n, from, to);
hanoi(n - 1, aux, to, from);
}
int main() {
hanoi(3, 'A', 'C', 'B');
return 0;
}
三、递归优缺点 #
3.1 优点 #
- 代码简洁
- 符合思维习惯
- 适合分治问题
3.2 缺点 #
- 效率较低
- 栈空间消耗
- 可能栈溢出
四、总结 #
| 要点 | 说明 |
|---|---|
| 基准条件 | 终止递归 |
| 递归条件 | 继续递归 |
| 栈空间 | 注意溢出 |
下一步,让我们学习作用域规则!
最后更新:2026-03-26