慕村5952072
2017-05-29 17:38
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
num=1;
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代表天数, num代表桃子数,而(getPeachNumber是什么意思呢?
(getPeachNumber(n+1)+1)*2; , 加一是因为它多吃了一个, *2是因为吃了一半,可是为什么要加两次一呢, 不太理解,
求解。 谢谢。
getPeachNumber(n+1)中的n+1代表的是天数,n是今天,n+1是第二天。所以 getPeachNumber(n+1) 就是指第二天的桃子数。(getPeachNumber(n+1)+1)*2 就是指第二天的桃子数加1再乘与两倍,得到今天的桃子数。
C语言入门
926020 学习 · 20793 问题
相似问题