首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于猴子吃桃有关问题

2011-11-07 
关于猴子吃桃问题猴子吃桃问题网上的方法都是倒着算的,我想用正着算的方法实现,就是挨个数字试,但是程序写

关于猴子吃桃问题
猴子吃桃问题网上的方法都是倒着算的,我想用正着算的方法实现,就是挨个数字试,但是程序写出来有问题,实在找不到原因,望高手帮忙解决,代码如下:
public class Monkey {

public static void main(String[] args) {
int i=0,j = 0;
int x;
for(x=1;x<2000;x++){/***************************************挨个数字试,从1开始,假设最大不超过2000*/
j=x;
for(i=1;i<=9;i++)
{
if(x%2==0)
{
x=x/2-1;/****************************************************每天剩下的桃子数*/
}
System.out.println(x);

}
if(x==1&&i==9)/*********************************************如果第九天吃完桃子还剩下一个,则相对应的那个数字就是桃子总数*/
{
System.out.println(j);
}

}


}

}

[解决办法]
public static long getCount(int day) {
long count = 1;
if (day != 1) {
count = (getCount(day - 1) + 1) * 2;
}
return count;
}
用递归 方便
[解决办法]
你的循环体里面的X的变量值一直被下x = x/2-1 最后变成1 导致进入无限循环 

修改后的代码

Java code
public static void main(String[] args) {        int i = 0, j = 0;        for (int x = 1; x < 2000; x++) {            /*************************************** 挨个数字试,从1开始,假设最大不超过2000 */            j = x;            for (i = 1; i <= 9; i++) {                if (j % 2 != 0) {                    break;                }                j = j / 2 - 1;                /**************************************************** 每天剩下的桃子数 */                // System.out.println(j + ":" + i);            }            if (j == 1 && i == 10) {                /********************************************* 如果第九天吃完桃子还剩下一个,则相对应的那个数字就是桃子总数 */                System.out.println(x);            }        }    } 

热点排行