慕粉4001126
2016-10-26 16:43
num = (getPeachNumber(n+1)+1)*2;
我来谈谈理解吧,也是看了好些视频和上面这位大神的答案才明白的
#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天的出来,打印的顺序是,先算出那个,就打印哪个
写的有点乱,这个能看懂吗。。。
n从头到尾没有说过是什么数据类型
老哥你写的不对呀,n没有定义
感谢,明白了
感谢
明白了很多
这句话是重点
以后每天都吃前一天剩下的一半零一个
num = (getPeachNumber(n+1)+1)*2;就是从后往前求的关系式,比如说要求第九天的桃子数量,num9=(getPeachNumber(9+1)+1)*2即第十天的桃子数量加上多吃的一个桃子之后再乘以二
C语言入门
926210 学习 · 20797 问题
相似问题