1.问题:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
2.解決思路:可以痛過递归来处理,f(n-1)=4(f(n)-1)/5;中间如果存在(num-1)%5!=0;说明桃子数不符合,如果从5-0,最后能进行到猴子数达到0,说明这个桃子数num符合
3.简单实例:
/**
* @Author: hs
* @Description: 猴子分桃
* @Date: 2021-02-01 18:36
*/
public class MonkeyBranchPeach {
public static void main(String[] args) {
int monkeys = 5;
int peaches = 10000;
boolean isOk = false;
for (int i = 1; i < peaches; i++) {
if (check(monkeys, i)) {
System.out.println("找到最少值为:" + i);
isOk = true;
}
}
if (!isOk) {
System.out.println("没有找到哦");
}
}
private static boolean check(int monkeys, int peaches) {
if (monkeys == 0) {
return true;
}
if ((peaches - 1) % 5 != 0) {
return false;
}
peaches = 4 * (peaches - 1) / 5;
return check(monkeys - 1, peaches);
}
}