C 递归
C 递归
在本教程中,您将通过示例学习在 C 编程中编写递归函数。
调用自身的函数称为递归函数。而且,这种技术被称为递归。
递归是如何工作的?
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }<图>
递归一直持续到满足某个条件来阻止它。
为了防止无限递归,可以在一个分支进行递归调用而另一个不进行递归调用的情况下使用 if...else 语句(或类似方法)。
示例:使用递归的自然数之和
#include <stdio.h>
int sum(int n);
int main() {
int number, result;
printf("Enter a positive integer: ");
scanf("%d", &number);
result = sum(number);
printf("sum = %d", result);
return 0;
}
int sum(int n) {
if (n != 0)
// sum() function calls itself
return n + sum(n-1);
else
return n;
}
输出
Enter a positive integer:3 sum = 6
最初,sum()
从 main()
调用 带有 number 的函数 作为参数传递。
假设,n 的值 sum()
里面 最初是 3。在下一次函数调用期间,将 2 传递给 sum()
功能。这个过程一直持续到 n 等于0。
当 n 等于0,if
条件失败并且 else
部分执行最终返回整数的总和到 main()
功能。
递归的优缺点
递归使程序优雅。但是,如果性能至关重要,请改用循环,因为递归通常要慢得多。
话虽如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在树遍历等问题中使用递归是很常见的。
C语言