您好,登錄后才能下訂單哦!
使用Java怎么實(shí)現(xiàn)一個(gè)猴子吃桃問題算法?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
猴子吃桃問題
概述:猴子第一天摘下N個(gè)桃子,當(dāng)時(shí)就吃了一半,還不過癮,就又吃了一個(gè);第二天又將剩下的桃子吃掉了一半,又多吃了一個(gè);以后每天都吃前一天身下的一半零一個(gè),到第n天再想吃的時(shí)候就只剩下一個(gè)桃子了,求第一天共摘了多少個(gè)桃子?
思路及演算步驟(求出共摘多少桃子的函數(shù)表達(dá)式):
離現(xiàn)在的天數(shù)作為變量
f(1) = 1 (剩下桃子的數(shù)目)
f(2) = f(3) - (吃掉了一些) = f(3) -(f(3)/2+1) = f(3)/2-1
....
f(n) = f(n+1)/2-1(遞推公式)
所以可以得到遞推公式:
f(n-1) = f(n)/2-1 => 2f(n-1) = f(n) - 2 => f(n)=2f(n-1) +2 (這是我們想要的公式)
然后可以求出離現(xiàn)在任何天數(shù)時(shí),猴子共摘下的桃子!
例如f(10)意思就是離現(xiàn)在10天的時(shí)候(10天以前猴子擁有的桃子的個(gè)數(shù))!
下面給出具體的代碼:
package javastudy; import java.util.Scanner; public abstract class Testit2 { // 猴子吃桃問題 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; n = in.nextInt(); System.out.println(f(n)); in.close(); } static int f(int n) { if (n == 1) //離現(xiàn)在只有一天的時(shí)候那就只剩下一個(gè)! return 1; return 2 * f(n - 1) + 2; } }
看完上述內(nèi)容,你們掌握使用Java怎么實(shí)現(xiàn)一個(gè)猴子吃桃問題算法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。