题目:
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,
拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、
第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
package 猴子吃桃;
/**
* (算法)题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,
* 拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、
* 第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
*/
public class Test {
// 循环方法
public static void MonkeyEattingProblemNor() {
int j = 6;
//成功的标志
boolean flag = true;
while (true) {
int count = j;
if ((j - 1) % 5 == 0) {
for (int i = 5; i > 0; i--) {
count--;
if (count % 5 == 0)
count = count / 5 * 4;
else {
flag = false;
break;
}
}
if (flag == true) {
System.out.println(j);
break;
}
flag = true;
}
j++;
}
}
/**
* 递归方法
*/
public static int MonkeyEattingProblem(int i) {
boolean flag = true;
int count = i;
if((i - 1) % 5 == 0) {
for (int j = 5; j > 0; j--) {
count--;
if (count % 5 == 0)
count = count / 5 * 4;
else {
flag = false;
break;
}
}
if(flag == true)
return i;
}
return MonkeyEattingProblem(i+1);
}
public static void main(String[] args) {
MonkeyEattingProblemNor();
int ret = MonkeyEattingProblem(5);
System.out.println(ret);
}
}
运行结果:3121