关于猴子吃桃问题
猴子吃桃问题网上的方法都是倒着算的,我想用正着算的方法实现,就是挨个数字试,但是程序写出来有问题,实在找不到原因,望高手帮忙解决,代码如下:
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 导致进入无限循环
修改后的代码
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); } } }