我感觉这么两个问题 大家一起帮忙看看

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

weixin_慕妹9153730

2020-02-06 11:48

  1. 按照答案的编程   最后输出的结果

    应该是这样的吧:

    第一天所剩桃子:

    第二天所剩桃子:

    ........

        第十天所剩桃子:

2.第一天摘的桃子应该是(1534+1)*2吧


写回答 关注

4回答

  • Warm_Sweet
    2020-03-07 23:06:16

    问题1:如下递归函数执行过程图,答案所给代码num = (getPeachNumber(n + 1) + 1) * 2;是n+1的形式,故该函数从主函数所给实参(这里是1)开始执行n+1的运算。递归函数按照123456789的顺序引用自身,然后逆序(987654321)执行运算过程,因此打印的顺序为逆序。如要正序打印,以下为参考代码:

    #include <stdio.h>

    int getPeachNumber(int n)

    {

    int num;

    if (n == 0)    //这里是结束条件,不打印该值,而是打印后面一个值(此处为1)

    num = 3070;    //这里需要提前计算出结果。当然也有代码不需要自己提前计算出结果,奈何我学识浅薄,只能想到这么个办法

    else

    {

    num = (getPeachNumber(n - 1) - 1) / 2;    //这里进行实参的n-1运算,即按照987654321顺序的运算

    printf("第%d天所剩桃子%d个\n", n, num);

    }

    return num;

    }

    int main()

    {

    getPeachNumber(10);    //如果到第九天停止,则此处实参需改为9

    printf("猴子第一天摘了:%d个桃子。\n", getPeachNumber(0));

    printf("猴子第一天剩了:%d个桃子。\n", getPeachNumber(1));    //这里调用了1,会多输出一个第一天

    return 0;

    }

    http://img1.mukewang.com/5e63b6760001d23705970304.jpg

    问题2:看了上面的内容,想必你已经知道了吧?

    Warm_S...

    实在看不明白就复制到题目中调试一下。

    2020-03-07 23:07:00

    共 1 条回复 >

  • weixin_慕仔0029264
    2020-02-28 11:22:46

    程序应该改成 printf("猴子第一天摘了:%d个桃子。\n", (num+1)*2);才对

  • 小白萌新up
    2020-02-24 16:10:15

    同求,第一天剩下的桃子应该是1534,那第一天摘的桃子就是(1534+1)*2啊   

    求明白人讲解

    qq_慕村0...

    我和你想的一样,应该是给的答案错了。

    2020-02-26 11:04:52

    共 1 条回复 >

  • 李梓煊12138
    2020-02-07 19:15:35

    先进后出 进123456789出987654321 我不确定仅供参考

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题