跳到主要内容

C 语言递归

提示
  1. 递归的定义:递归是指一个函数调用自身的编程技术,称为递归函数。
  2. 递归的工作原理:在递归中,函数重复调用自己直到达到某个终止条件,通常使用if...else语句或类似方法来避免无限递归。
  3. 递归的优缺点:递归可以使程序更优雅,但如果性能很重要,最好使用循环,因为递归通常会更慢。尽管如此,递归在数据结构和算法中是一个重要概念,例如在树遍历问题中常用递归。

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

递归如何工作?

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

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

C编程中递归如何工作?

递归将持续进行,直到满足某些条件以防止它。

为了防止无限递归,可以使用if...else语句(或类似方法),其中一个分支进行递归调用,另一个则不进行。

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

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

int main() {
int number, result;

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

result = sum(number);

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

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

输出

输入一个正整数:3
总和 = 6

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

假设,最初在sum()内部的n值为3。在下一次函数调用中,2传递给sum()函数。这个过程持续进行,直到n等于0。

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

使用递归计算自然数之和的计算过程

递归的优点和缺点

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

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