问答详情
源自:5-8 递归函数(二)

printf语句和递归函数递推和回递时的执行顺序

printf语句也在函数getpeachnumber(n)里面,当n等于1,调用自身时,为什么printf语句在这个函数体内也没有执行到printf语句?

如果递推时没有执行到printf语句,为什么回推的时候会执行到printf语句,而不是回推完毕之后,得到第一天的总数,再来执行printf语句

提问者:前因后果 2015-12-04 19:42

个回答

  • 狂野与优雅
    2015-12-07 01:29:52

    #include <stdio.h>
    int getPeachNumber(n)
    {
        int num;    //定义所剩桃子数
        if(n==10)
        {
            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;
    }

    上面的代码总共有22行,假设第一次调用时,没有行的标号为1-1   到 1-22;第二次调用时 2-1 到2-22;依此类推。

    代码执行顺序:

    1-1  >> 1-11 >>2-1 >>2-11 >>>>>>10-1>>10-6 >>9-12>>9-22>>8-12>>8-22>>>>>>1-12>>1-22

  • 流浪_老
    2015-12-04 19:47:21

    大家一起猜代码