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

来源:5-8 递归函数(二)

qq_照遍天宇_04160908

2016-10-23 22:53

谢谢,非常感谢!!!

写回答 关注

1回答

  • 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个.


    那谁很靠谱3...

    第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个. 这个为什么不是(f(n-1)+1)*2?看着一直在递减啊?想了两天了都没想明白。。。。

    2016-10-25 10:08:08

    共 4 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926207 学习 · 20797 问题

查看课程

相似问题