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

猴子摘桃问题?求大神解释

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。



正在回答

3 回答

i=10

s=1

for i in range(10):

    i=s+1+1

    s=s+i

    print(i)

print(s)

   

Python 

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

qq_张_9

i=1
2017-10-31 回复 有任何疑惑可以回复我~

首先他是一个递归问题,什么是递归。递归就是函数调用自身。

分析这个问题,要知道第一天桃子的个数,就必须要知道第二天桃子的个数,可以使用一个递归函数

getPeachnumber(n)

其中当n为10的时候表示的是第十天剩余桃子的个数

这时候我们想要求得第九天的桃子数   题上说第n天的桃子数是n-1天桃子数的一半再减一

相当于是(第n+1天的桃子数+1)*2是第n天的桃子数

所以可构建出递归函数 num =(getPeachNumber(n+1)+1)*2;

再控制好结束条件,返回值,就OK了

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

#include <stdio.h>
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;
}

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

猴子摘桃问题?求大神解释

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