递归是在自相似的方式重复项目的过程。同样适用于编程语言以及其中,如果一个程序可以调用同一个函数被调用的函数的递归调用,如下函数内使用。
void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); }
C语言编程语言支持递归,即要调用的函数本身。不过,在使用递归,程序员需要谨慎确定从函数的退出条件,否则会在无限循环。
递归函数是解决许多数学问题想计算一个数阶乘非常有用的,产生斐波系列等
数字阶乘
以下是一个例子,它计算阶乘用于使用一个递归函数给定的数:
#include <stdio.h> int factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 15; printf("Factorial of %d is %d ", i, factorial(i)); return 0; }
当上述代码被编译和执行时,它产生了以下结果:
Factorial of 15 is 2004310016
斐波那契系列
以下是另一个例子,其给定参数产生斐波串联使用一个递归的函数:
#include <stdio.h> int fibonaci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonaci(i-1) + fibonaci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d %n", fibonaci(i)); } return 0; }
当上述代码被编译和执行时,它产生了以下结果:
0 1 1 2 3 5 8 13 21 34