今天吾爱编程为大家分享一个java的经典案例:海滩上有一堆桃子,五只猴子来分,接下来吾爱编程为大家介绍一下海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份写法,有需要的小伙伴可以参考一下:
1、程序需求:
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
2、程序代码:
public class Dg {
static int ts=0;//桃子总数
int fs=1;//记录分的次数
static int hs=5;//猴子数...
int tsscope=5000;//桃子数的取值范围.太大容易溢出.
public int fT(int t){
if(t==tsscope){
//当桃子数到了最大的取值范围时取消递归
System.out.println("结束");
return 0;
}
else{
if((t-1)%hs==0 && fs <=hs){
if(fs==hs){
System.out.println("桃子数 = "+ts +" 时满足分桃条件");
}
fs+=1;
return fT((t-1)/5*4);// 返回猴子拿走一份后的剩下的总数
}
else{
//没满足条件
fs=1;//分的次数重置为1
return fT(ts+=1);//桃子数加+1
}
}
}
public static void main(String[] args) {
new Dg().fT(0);
}
}
3、程序扩展:
有一堆桃子,6只猴子来分。第一只猴子把这堆桃子平均分为6份,多了一个,这只猴子把多的一个吃掉,并拿走了一份;第二只猴子把剩下的桃子又平均分成6份,又多了一个,它同样把多的一个吃掉,并拿走了一份;第三、第四、第五、第六只猴子都是这样做的,问海滩上原来最少有多少个桃子?
4、程序代码:
public class text10{
public static void main(String[] args) {
int sum2;
int sum1 = 7;
int count;
int index;
boolean flag = true;
while(flag)
{
index = 0;
count = 0;
sum2 = sum1;
while(count < 6)
{
if(sum2%6 == 1)
{
sum2 -= 1;
sum2 -= sum2/6;
index++;
}
if(index == 6)
{
System.out.println("最少有 " + sum1 + " 个桃子!");
flag = false;
break;
}
count++;
}
sum1 += 6; }
}
}
以上就是吾爱编程为大家介绍的海滩上有一堆桃子,五只猴子来分的Java经典案例的全部内容了,希望对大家有所帮助,了解更多相关文章请关注吾爱编程网!