C语言猴子吃桃,递归,return 1

/*猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。*/
#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;
}
////////////////////
//如果到了第10天,return 1;就相当于返回1,退出函数了,递归函数不在继续执行,相当于执行到第10天//才知道第十天剩余桃子数目是1,还怎么求第九天

getPeachNumber(x)表示第x天剩下桃子的数目

根据你的递归程序,到第十天只剩一个,所以getPeachNumber(10)=1

这个getPeachNumber(10)是反馈给getPeachNumber(9)的

因为getPeachNumber(9)=(getPeachNumber(10)+1)*2

这样你知道第十天剩1个,就返回去算出第九天
算出第九天又能算出第八天

以此类推最后得到第一天
温馨提示:答案为网友推荐,仅供参考
相似回答