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

来源:5-8 递归函数(二)

街边七号

2017-02-23 10:19

#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回答

  • 张幼安
    2017-02-27 20:46:42
    已采纳

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

    街边七号

    搜嘎..多谢多谢

    2017-04-04 13:32:44

    共 1 条回复 >

  • 张幼安
    2017-02-27 20:44:37

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

  • 琴书
    2017-02-23 15:06:20

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

    街边七号

    怎样有if条件知道为1啊 有点转不过来..

    2017-04-04 13:31:43

    共 1 条回复 >

  • 慕粉娃
    2017-02-23 14:59:07

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

    街边七号

    不是不是...我不明白是循环部分 为什么程序递归循环到第一天的时候就是停止递归 它为什么会默认停止循环第0天 第-1天 第-2天.,..我是这个意思

    2017-04-04 13:29:27

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926207 学习 · 20797 问题

查看课程

相似问题