对递归函数(二)的理解

#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;
}
点赞