问答详情
源自:5-8 递归函数(二)

C语言入门~~谁能讲解下递归函数,总想不通了!

谢谢,非常感谢!!!

提问者:qq_照遍天宇_04160908 2016-10-23 22:53

个回答

  • Void_main
    2016-10-24 09:12:00
    已采纳

    1. #include <stdio.h>

    2. int getPeachNumber(n)

    3. {

    4.     int num;    //定义所剩桃子数

    5.     if(n==10)

    6.     {

    7.      return 1; //递归结束条件

    8.     } 

    9.     else

    10.     {

    11.         num = (getPeachNumber(n+1)+1)*2;   //这里是不应该用递归呢?

    12.         printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数

    13.     }

    14.     return num;

    15. }

    16. int main()

    17. {

    18.     int num = getPeachNumber(1);

    19.     printf("猴子第一天摘了:%d个桃子。\n", num);

    20.     return 0;

    21. }

      第10天是已知的数量,有1个桃子,即为函数的初始值。

      一天吃一半+1个,(有函数f(n)表示第n天的桃子数)那么:

      第9天有(第10天的数量+1)*2个,即(f(10)+1)*2个;

      第8天有(第9天的数量+1)*2个,即(f(9)+1)*2个;

      第7天有(第8天的数量+1)*2个,即(f(8)+1)*2个;

      ……

      第2天有(第3天的数量+1)*2个,即(f(3)+1)*2个;

      第1天有(第2天的数量+1)*2个,即(f(2)+1)*2个;

      由以上的递推可以得到一个关系表达式:

      n天有(第n+1天的数量+1)*2个,即(f(n+1)+1)*2个.