C 语言递归编程精要:最佳实践与退出条件设计
递归是以自我相似方式重复项目的过程。在编程语言中,若程序允许函数在内部调用自身,则称为函数的递归调用。
void recursion() {
recursion(); /* 函数调用自身 */
}
int main() {
recursion();
}
C 语言支持递归,即函数可调用自身。但使用递归时,程序员必须小心定义函数的退出条件,否则将陷入无限循环。
递归函数解决多数学问题非常有用,如计算阶乘、生成斐波那契数列等。
数字阶乘
以下示例使用递归函数计算给定数字的阶乘:
Live Demo#include <stdio.h>
unsigned long long int factorial(unsigned int i) {
if (i <= 1) {
return 1;
}
return i * factorial(i - 1);
}
int main() {
int i = 12;
printf("Factorial of %d is %llu\n", i, factorial(i));
return 0;
}
编译执行输出:
Factorial of 12 is 479001600
斐波那契数列
以下示例使用递归函数生成给定数字的斐波那契数列:
Live Demo#include <stdio.h>
int fibonacci(int i) {
if (i == 0) {
return 0;
}
if (i == 1) {
return 1;
}
return fibonacci(i-1) + fibonacci(i-2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%d\t\n", fibonacci(i));
}
return 0;
}
编译执行输出:
0 1 1 2 3 5 8 13 21 34
C语言