枫中心雨
2018-10-11 09:26
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1; //递归结束条件
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
倒着来看,当n=9的时候 n+1=10 if成立 返回1 也就是说getPeachNumber(10) = 1 || 而getPeachNumber(9) = (getPeachNumber(10)+1)*2 = (1+1)*2 = 4 || getPeachNumber(8) = (getPeachNumber(9)+1)*2 = 10, 然后就可以算出来了, 递归就是一个函数s(n)里面再套上s(n+1) s(n+1)里面再套上s((n+1)+1)..... 我也是前天才开始学的,花了昨天一天才把这个递归搞的差不多懂一点. 这也只是我个人不成熟的看法 有什么不对的地方请多多包涵 : )
还是没看懂啊,但是他在main函数中的getPeachNumber()这个函数中实参传的是1啊,所以在else哪里的getPeachNumber()的n也是等于(getPeachNumber(1+1)+1)*2啊
thank
C语言入门
926020 学习 · 20793 问题
相似问题