C 语言基础教程

C 语言流程控制

C 语言函数

C 语言数组

C 语言指针

C 语言字符串

C 语言结构体

C 语言文件

C 其他

C 语言参考手册

C 语言递归

在本教程中,您将借助示例学习使用C语言编程编写递归函数。

调用自身的函数称为递归函数。并且,这种技术称为递归。

递归如何工作?

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

递归继续进行,直到满足某些条件以防止递归为止。

为了防止无限递归,可以在一个分支进行递归调用,而其他分支不进行递归调用的情况下使用if ... else语句(或类似方法)。

示例:使用递归的自然数之和

#include <stdio.h>
int sum(int n);

int main() {
    int number, result;

    printf("请输入一个正整数: ");
    scanf("%d", &number);

    result = sum(number);

    printf("sum = %d", result);
    return 0;
}

int sum(int n) {
    if (n != 0)
        //sum()函数调用自身
        return n + sum(n-1); 
    else
        return n;
}

输出结果

请输入一个正整数:3
sum = 6

最初,从main()函数调用sum(),并将number作为参数传递。

假设sum()中的n初始值为3。 在下一个函数调用期间,将2传递给sum()函数。 此过程一直持续到n等于0。

当n等于0时,if条件失败,执行else部分,最终将整数和返回给main()函数。

递归的优缺点

递归使程序优雅。但是,如果性能至关重要,请使用循环代替,因为递归通常要慢得多。

话虽如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在诸如树遍历之类的问题中通常使用递归。