5个猴子分桃子问题:
有5个猴子分一堆桃子,不可以平分,5个猴子都回去睡觉了.
晚上,第一个猴子深夜偷偷起来,丢掉一个桃子,正好可以5个人分,于是,他拿掉自己的那份回去了。
第二个猴子也起来了,又丢了个桃子,又正好可以5个人分,于是,他也拿着自己的那份走了。
后面的3,4,5猴子都是用同样的方法,也都正好。
问:至少有几个桃子。
普通法
public class HouZiFenTao {
public static void main(String[] args) {
int count = 0;
int peaches = 1;
int temp = 1;
while(true){
temp = peaches;
for(count=0; count<5; count++) {
if((temp-1) % 5 == 0) {
temp = (temp - 1)/5 * 4;
}else{
break;
}
}
if(count == 5){
break;
}
peaches++;
}
System.out.println("至少要有"+peaches+"个桃子");
}
}
结果显示:
至少要有3121个桃子
递归调用方法
public class HouZiFenTao_DiGuiDiaoYong {
static int count=0;
public static void main(String[] args) {
int i;
for(i=6;i>1;i=i+5) {
if((i-1)%5==0) {
count=0;
if (tao(i)!=0&&count==5) {
System.out.println("至少要有"+i+"个桃子");
break;
}
}
}
}
public static int tao(int num) {
int t=num-1;
if(t%5==0&&count<5) {
count++;
return tao(t/5*4);
}else return num;
}
}
结果显示:
至少要有3121个桃子