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

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。这是怎么来的?

num = (getPeachNumber(n+1)+1)*2;

正在回答

6 回答

我来谈谈理解吧,也是看了好些视频和上面这位大神的答案才明白的

#include <stdio.h>
int getPeachNumber(n)//注释1:下面会有解释
{
    int num;    //定义所剩桃子数
    if(n==10)//注释2:下面会有解释
    {
        return 1;     
    } 
    else
    {
        num = (getPeachNumber(n+1)+1)*2; //注释3,下面会有解释 
        printf("第%d天所剩桃子%d个\n",n,num); 
    }
    return num;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}

注释1:getPeachNumber(n),这个当中的(n)代表的是天数

注释2:当n等于10的时候,输出1,//第十天的时候,还剩1个桃子

注释3:第1天的桃子数量,现在我们不知道,但是我们知道第1天的桃子等于第2天的桃子数量加1乘以2,用公式表达就是(n+1)这个是天数,(n+1)+1这个是第2天的桃子数量+1,((n+1)+1)*2这个是第2天的桃子数量+1然后乘以2,但是第二天的剩余的桃子数量现在也不知道,程序会继续按照这个公式往下走,一直到n==10,这个时候就知道了,第10天剩余1个桃子,现在程序就可以算出第9天等于((1+1)+1)*2等于4,然后这个公式继续往下走,就能算出第8天等于((4)+1)*2,一直到最后算出第1天的出来,打印的顺序是,先算出那个,就打印哪个

写的有点乱,这个能看懂吗。。。

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

慕粉1044112194

第9天等于(getPeachNumber(10)+1)*2 getPeachNumber(10) 返回值为1 即 getPeachNumber(9)=(1+1)*2=4
2016-11-13 回复 有任何疑惑可以回复我~
#2

慕粉4001126 提问者

非常感谢!
2016-11-13 回复 有任何疑惑可以回复我~
#3

禾火一风

((1+1)+1)*2不是等于5吗?
2016-11-20 回复 有任何疑惑可以回复我~
#4

刘一_53707959

感谢 明白了很多
2016-11-20 回复 有任何疑惑可以回复我~
#5

那谁很靠谱3587144 回复 禾火一风

对,我那个写错了,应该是第9天的桃子数等于((1)+1)*2等于4,最里面那个括号里的1是n==10的时候return 1返回的值
2016-11-21 回复 有任何疑惑可以回复我~
#6

慕婉清8686512

非常感谢!
2016-12-08 回复 有任何疑惑可以回复我~
#7

C语言从入门到放弃 回复 慕粉1044112194

意思是这样吗 第8天等于(getPeachNumber(8+1)+1)*2 getPeachNumber(9) 返回值不是1 即 getPeachNumber(8)=(9+1)*2=20
2019-09-02 回复 有任何疑惑可以回复我~
查看4条回复

n从头到尾没有说过是什么数据类型

0 回复 有任何疑惑可以回复我~

老哥你写的不对呀,n没有定义



0 回复 有任何疑惑可以回复我~

感谢,明白了

0 回复 有任何疑惑可以回复我~


感谢  
明白了很多

0 回复 有任何疑惑可以回复我~

这句话是重点

以后每天都吃前一天剩下的一半零一个

num = (getPeachNumber(n+1)+1)*2;就是从后往前求的关系式,比如说要求第九天的桃子数量,num9=(getPeachNumber(9+1)+1)*2即第十天的桃子数量加上多吃的一个桃子之后再乘以二

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

C语言从入门到放弃

第8天呢
2019-09-02 回复 有任何疑惑可以回复我~
#2

C语言从入门到放弃

这里面n+1什么意思,请解释下
2019-09-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。这是怎么来的?

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