java算法:猴子分桃子問題

題目:海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分爲五份,多了一個,這隻猴子把 多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的 一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?
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); 
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章