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

输出结果为什么不是从第一天到第九天,而是从第九天到第一天呢?希望看得懂的人可以为我详细的讲解下,感激不尽!!!

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;
}


正在回答

1 回答

因为递归是从第十天剩余1个桃子开始的,第九天的桃子数量是第十天的桃子+1再乘以2,依次递归直到第一天

1 回复 有任何疑惑可以回复我~
#1

imooc_粉丝 提问者

没有答到要点上,你应该和主函数的int num = getPeachNumber(1);这个关联啊
2016-09-14 回复 有任何疑惑可以回复我~
#2

JustWannaHugU 回复 imooc_粉丝 提问者

int num = getPeachNumber(1);不是传入的1吗?之后就一直getPeachNumber(n+1)...直到n+1=10, 然后到递归中止条件return 1了,这时开始逐层往上return 在这个过程中会print出桃子的数量,返回的顺序正好与开始的顺序相反
2016-09-14 回复 有任何疑惑可以回复我~
#3

JustWannaHugU 回复 imooc_粉丝 提问者

刚在游戏呢,你看这样解释行吗
2016-09-14 回复 有任何疑惑可以回复我~
#4

imooc_粉丝 提问者 回复 JustWannaHugU

这个回答还差不多
2016-09-15 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

输出结果为什么不是从第一天到第九天,而是从第九天到第一天呢?希望看得懂的人可以为我详细的讲解下,感激不尽!!!

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