- 五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
析:设f(n)为第n次分后每堆的数量。
则f(n+1) = (4*f(n)-1)/5;(1<=n<=4)即:f(n)=(5*f(n+1)+1)/4;总数量S=5*f(1)+1;
Java程序如下:
public static void f(){
for(float i = 1.0f;i < 10000;i++){
float tmp = i;
boolean flag = true;
int k = 0;
//此时的tmp表示第4次分堆后每堆的个数。
while(flag && k<4){
tmp = (5*tmp+1)/4;
if(tmp % 1 != 0){
flag = false;
}
k++;
}
if(flag){
//此时的tmp表示第1次分堆后每堆的个数。
System.out.println("总的桃子数可以为:"+ (5*tmp+1));
}
}
}
输出结果如下:


