课程表

C语言 教程

C 标准库

工具箱
速查手册

C 递归

当前位置:免费教程 » 程序设计 » C 语言

递归指的是在函数的定义中使用函数自身的方法。

举个例子:
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"

语法格式如下:

  1. void recursion()
  2. {
  3. recursion(); /* 函数调用自身 */
  4. }
  5.  
  6. int main()
  7. {
  8. recursion();
  9. }

C 语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。

递归函数在解决许多数学问题上起了至关重要的作用,比如计算一个数的阶乘、生成斐波那契数列,等等。

数的阶乘

下面的实例使用递归函数计算一个给定的数的阶乘:

  1. #include <stdio.h>
  2.  
  3. double factorial(unsigned int i)
  4. {
  5. if(i <= 1)
  6. {
  7. return 1;
  8. }
  9. return i * factorial(i - 1);
  10. }
  11. int main()
  12. {
  13. int i = 15;
  14. printf("%d 的阶乘为 %f\n", i, factorial(i));
  15. return 0;
  16. }

在线运行实例

当上面的代码被编译和执行时,它会产生下列结果:

  1. 15 的阶乘为 1307674368000.000000

斐波那契数列

下面的实例使用递归函数生成一个给定的数的斐波那契数列:

  1. #include <stdio.h>
  2.  
  3. int fibonaci(int i)
  4. {
  5. if(i == 0)
  6. {
  7. return 0;
  8. }
  9. if(i == 1)
  10. {
  11. return 1;
  12. }
  13. return fibonaci(i-1) + fibonaci(i-2);
  14. }
  15.  
  16. int main()
  17. {
  18. int i;
  19. for (i = 0; i < 10; i++)
  20. {
  21. printf("%d\t\n", fibonaci(i));
  22. }
  23. return 0;
  24. }

在线运行实例

当上面的代码被编译和执行时,它会产生下列结果:

  1. 0
  2. 1
  3. 1
  4. 2
  5. 3
  6. 5
  7. 8
  8. 13
  9. 21
  10. 34
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号