#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if (n == 10)
{
return 1;//递归结束条件
}
else
{
num = 2*(getPeachNumber(n+1)+1); //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
system("pause");
return 0;
}
数据结构栈中数据是先进后出的,递归也是一样的,因此是倒着打印的,可以百度一下仔细看一下
在此代码的递归中getPeachNumber(n+1)(简称为g(n))num=(g(n+1)+1)会使函数一直调用自己 当n==10的时候会得到一个返回值1并返回给g(9)当g(9)得到返回值后就会向下执行printf,执行完后再把值返回给g(8),g(8)再执行printf 以此类推 所以是倒过来打印的