继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

对递归函数(二)的理解

梦在彼方
关注TA
已关注
手记 1
粉丝 1
获赞 33
#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;
}
打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP