为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

正在回答

2 回答

#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

0 回复 有任何疑惑可以回复我~

大家一起猜代码

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信