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