编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早相关的知识,希望对你有一定的参考价值。

编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上吃前天剩下的一半零一个 第十天早上想吃发现就剩一个 求第一天共摘了几个

 先分析问题:用逆向思维来思考它,根据题意“ 以后每天早上吃前天剩下的一半零一个 ”,则我们可以用逆向思维来推导它,即从第十天往前推。已知第十天有一个,根据题意第九天应该就是(1+1)*2=4个,第八天应该就是(4+1)*2=10, 第七天应该就是(10+1)*2=22, 第六天应该就是(22+1)*2=46,
依此类推,直至第1天应该就是第2天(766+1)*=1534个桃子,即猴子第一天摘了1534个桃子。
为了验证这个推导的正确性,你可以按正常逻辑来把它(即此时由前往后)推导,即由第一天1534个桃子,第二天就是1534/2-1=766个桃子,依此类推,直至第十天,那么猴子此时就会发现只剩一个。


至此,我们由了推导的思想,再来编写的代码,就是小菜一碟的事情啦,实现的它方式无非就是那么两种,一种是简单的for循环,另一种是递归。这里我采用递归,因为解决此类问题往往用递归来思考它,会让问题变得更简单。按照数学思维来说 就是求未知数,则可以根据已知数出发进行求解(那么这里的已知数已经告诉了我们,它说第十天只有一个桃子)。

下面是我的递归算法来求解它的方法:

#include <iostream>
using namespace std;
int recurrent_monkey(int days) //猴子吃桃递归

int peach;
if (days==10) peach=1; // 递归出口条件 (已知条件第10天只有一个桃子)
else peach=(recurrent_monkey(days+1)+1)*2;
return peach;

int main()

int days=1;
cout<<recurrent_monkey(days)<<endl;

参考技术A unsigned int peach_counter; //桃子总数
unsigned int data[10]; //10天每天吃的桃子数量
unsigned int i;
data[0]=1;
for(i=1;i<10;i++)

data[i]=(data[i-1]+1)*2;
if(i==9)

peach_counter= data[9];

追问

可不可以编的能让初学者看懂的

追答

这看不懂吗?我觉得好简单了啊

追问

我是刚学滴

追答

unsigned int peach_counter; //桃子总数
unsigned int data[10]; //10天每天吃的桃子数量 data[10]这是数组,从data[0]--data[9],定义为无符号整型变量,表示10天,data[0],表示最后1天,data[9]是摘桃子的那天。
unsigned int i; //是用来做FOR循环计数器用的,也是定义为无符号整型变量
void main (void) //进入主程序//

data[0]=1; //最后1天剩的桃子数量//
for(i=1;i<10;i++) //进入FOR循环,当i<10,每循环1次加1,从第二天开始,因为第1天只剩一个桃子了//

data[i]=(data[i-1]+1)*2; //每天的桃子数量是前天的数量加1的两倍
if(i==9) //当I等于9也就是第10天的时候,把桃子数量送入桃子总数就行了

peach_counter= data[9];


参考技术B 第一天摘了1534个追问

编程 谢谢

追答

编程呐。。。。。那还是算了最烦编程了

参考技术C 若干个

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个     第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下

package C;

public class Tao {

    public static void main(String[] args) {
        int m=1;
        for (int i = 10; i >1; i--) 
        {
            m=(m+1)*2;
            
        }
         System.out.println("第一天摘了桃子: "+m+" 个");
    }

}

以上是关于编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早的主要内容,如果未能解决你的问题,请参考以下文章

猴子吃桃--------两个猴子吃桃问题解决的详细描述

猴子吃桃问题

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个     第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下

猴子吃桃问题

用java猴子吃桃子问题,第一天吃掉所有桃子的一半多一个,第二天又吃掉剩下桃子的一

猴子吃桃