为了账号安全,请及时绑定邮箱和手机立即绑定

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

谢谢,非常感谢!!!

正在回答

1 回答

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


1 回复 有任何疑惑可以回复我~
#1

qq_照遍天宇_04160908 提问者

为什么先输出的是If里面的?
2016-10-24 回复 有任何疑惑可以回复我~
#2

Void_main 回复 qq_照遍天宇_04160908 提问者

在另一条贴里回答了
2016-10-24 回复 有任何疑惑可以回复我~
#3

qq_照遍天宇_04160908 提问者

非常感谢!
2016-10-24 回复 有任何疑惑可以回复我~
#4

那谁很靠谱3587144

第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 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信