javascript解決猴子偷桃問題
阿新 • • 發佈:2021-01-31
技術標籤:遞迴javascript
猴子偷桃問題
有一堆桃子不知數目。猴子第一天吃掉一半,覺得不過癮,又多吃一隻,第二天照此辦法,吃掉剩下桃子的一半另加一隻,天天如此,到第num(num <= 10)天早上,猴子發現只剩一隻桃子了,問這堆桃子原來有多少隻?
乍一看,這是一道數學題,要想在程式設計中解決,先對題目進行分析:
因為我們已知條件是最後一天還剩一隻桃子,故對其進行反推,得到如上圖所示的規律:
從上往下看:
前一天的桃子數量 = 後一天的桃子數量 * 2 + 2
故在程式設計中滿足遞迴:
遞迴寫法:
1. 首先去找臨界值,即無需計算,獲得的值(n=1時是1,n=2時是4)2. 找這一次和上一次的關係 (peach_Num(n) = peach_Num(n-1)*2 + 2; )
3. 假設當前函式已經可以使用,呼叫自身計算上一次
//設n為還剩多少天?
function peach_Num(n) {
if(n == 1){
return 1;
}
if(n == 2){
return 4;
}
return peach_Num(n-1)*2+2;
}
問題解決!