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

请问以下代码倒序输出每天所剩桃子数 为什么到1就停止 为什么不继续输出第0天第-1天-2天????求教

#include <stdio.h>
int getPeachNumber(int n)
{
    int num;    //定义所剩桃子数
    if(n==10)
    {
       return 1;      //递归结束条件
    }
    else
    {
        num = (getPeachNumber(n+1)+1)*2;   //这里是不应该用递归呢?
        printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
    }//就是这个位置  为什么编译器到所剩天数1就会自动停止 不继续0  -1  或者更小??
    return num;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}

正在回答

4 回答

刚刚我又试了一下,确实是我说的那样,当改为2的时候,就算到了第二天。当然你也可以尝试看看。

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

街边七号 提问者

搜嘎..多谢多谢
2017-04-04 回复 有任何疑惑可以回复我~

这里我也看了很久,个人以为是因为getPeachNumber(1).括号里面是1,表示递归基数为1,就是倒数的最后一个数,如果是2的话,应该就会最后算到第二天

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

n=10时得到getPeachNumber(n)的值有if条件可知为1,也就是不会继续向前运行,不会有getPeachNumber(n+1(11))存在

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

街边七号 提问者

怎样有if条件知道为1啊 有点转不过来..
2017-04-04 回复 有任何疑惑可以回复我~

代码中,在第十天时,输出return 1,这里的return 1,其实是指不正常结束循环,就好像有返回值的代码的最后会有return 0(表示正常结束循环),因为题目要求的是求第一天的桃子数,而如果求得是第十天就不符合题目要求,不是要求的结果,所以非正常结束。

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

街边七号 提问者

不是不是...我不明白是循环部分 为什么程序递归循环到第一天的时候就是停止递归 它为什么会默认停止循环第0天 第-1天 第-2天.,..我是这个意思
2017-04-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问以下代码倒序输出每天所剩桃子数 为什么到1就停止 为什么不继续输出第0天第-1天-2天????求教

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