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

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

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

    应该是这样的吧:

    第一天所剩桃子:

    第二天所剩桃子:

    ........

        第十天所剩桃子:

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


正在回答

4 回答

问题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.sycdn.imooc.com//5e63b6760001d23705970304.jpg

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

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

Warm_Sweet

实在看不明白就复制到题目中调试一下。
2020-03-07 回复 有任何疑惑可以回复我~

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

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

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

求明白人讲解

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

qq_慕村0122740

我和你想的一样,应该是给的答案错了。
2020-02-26 回复 有任何疑惑可以回复我~

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

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

举报

0/150
提交
取消

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

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