梦在彼方
2016-08-09 14:04:39浏览 3277
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1; //递归结束条件(同样可以填num = 1,return取不到此处num)
}
else
{
num = (getPeachNumber(n+1)+1)*2; /*递归点使得函数不断积累,一直在这里不断递归至运行到n=10时return 1,此时递归结束,继续向下运行程序,由于输出语句紧接其后大量积累,从而输出从n=9开始输出(n=10时,return 1无输出),自定义函数全部输出完后程序继续向下运行,而在最后递归的n=10中return出1,return出1后继续执行输出语句直到最外层的n=1所对应的num,随后return出num,故最终main函数输出第1天桃子*/
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;//自定义函数运行结果
}
int main()
{
int num = getPeachNumber(1);//引入点为n=1即第一天时桃子数,根据n的变化自定义函数从不同的起点开始运行,并最终回到起点,从而得到不同n所对应的num
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}