开发手册 欢迎您!
软件开发者资料库

C - 递归

C递归 - 从简单和简单的步骤学习C编程,从基本到高级概念,包括C概述,语言基础,环境设置,程序结构,基本语法,文字,数据类型,变量,常量,存储类,操作符,决策制作,函数,范围规则,循环,数组,指针,字符串,结构,联合,位字段,Typedef,输入和输出,头文件,类型转换,错误处理,递归,变量参数,内存管理,预处理器,指令,命令行参数等

递归是以自相似方式重复项目的过程.在编程语言中,如果程序允许您在同一函数内调用函数,则称其为函数的递归调用.

  void recursion(){ recursion();/*函数调用本身*/}  int main(){ recursion(); }

C编程语言支持递归,即调用自身的函数.但是在使用递归时,程序员需要小心从函数中定义退出条件,否则它将进入无限循环.

递归函数对于解决许多数学问题非常有用,例如计算一个数的阶乘,生成Fibonacci系列等等.

Number Factorial

以下示例使用以下算法计算给定数字的阶乘递归函数 :

#include 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 %d\n", i, factorial(i));   return 0;}

编译并执行上述代码时,会产生以下结果 :

Factorial of 12 is 479001600

斐波那契系列

以下示例生成给定数字的Fibonacci系列使用递归函数 :

#include 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