当前位置:编程学习 > JAVA >>

一个脑筋急转弯的程序问题,大家进来讨论一下!

之前考试时有这样一个问题:

说,有一只猴子,它有一堆桃子,第一天吃了这堆桃子的一半加一个。

第二天吃了剩下的桃子的一半加一个......

以此类推,到20天时,它还剩余1个桃子。

问:这堆桃子共有多少个?

要求:输出这只猴子每天吃的桃子数。



欢迎大家给出解题思路、解题代码 --------------------编程问答--------------------

public class PeachEating
{
public static void main(String[] args)
{
int[] eating=new int[20];
for(int i=20;i>0;i--)
{
int number=getTheNumber(i); //倒着往前推。
eating[i-1]=(number/2)+1; //每天吃掉的放数组里。
}
System.out.println("------这堆桃共有 "+(2*(eating[0]-1)) +"个--------");
System.out.println("每天吃掉的情况是:");
for(int i=0;i<20;i++)
{
System.out.println("第 "+(i+1)+"\t天吃掉:  "+eating[i]+"\t桃子");
}

}
public static int getTheNumber(int n)
{
if(n==20)
{
return 1; //第20天只能吃1个。
}
else
{
return 2*(getTheNumber(n+1)+1); //之前吃的数是下一天的数加1再乘2。
}
}
}

------这堆桃共有 1572862个--------
每天吃掉的情况是:
第 1    天吃掉:  786432 桃子
第 2    天吃掉:  393216 桃子
第 3    天吃掉:  196608 桃子
第 4    天吃掉:  98304  桃子
第 5    天吃掉:  49152  桃子
第 6    天吃掉:  24576  桃子
第 7    天吃掉:  12288  桃子
第 8    天吃掉:  6144   桃子
第 9    天吃掉:  3072   桃子
第 10   天吃掉:  1536   桃子
第 11   天吃掉:  768    桃子
第 12   天吃掉:  384    桃子
第 13   天吃掉:  192    桃子
第 14   天吃掉:  96     桃子
第 15   天吃掉:  48     桃子
第 16   天吃掉:  24     桃子
第 17   天吃掉:  12     桃子
第 18   天吃掉:  6      桃子
第 19   天吃掉:  3      桃子
第 20   天吃掉:  1      桃子
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,