使用Java怎么實現(xiàn)一個猴子吃桃問題算法?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
上蔡網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),上蔡網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為上蔡近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的上蔡做網(wǎng)站的公司定做!
猴子吃桃問題
概述:猴子第一天摘下N個桃子,當(dāng)時就吃了一半,還不過癮,就又吃了一個;第二天又將剩下的桃子吃掉了一半,又多吃了一個;以后每天都吃前一天身下的一半零一個,到第n天再想吃的時候就只剩下一個桃子了,求第一天共摘了多少個桃子?
思路及演算步驟(求出共摘多少桃子的函數(shù)表達式):
離現(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ù)時,猴子共摘下的桃子!
例如f(10)意思就是離現(xiàn)在10天的時候(10天以前猴子擁有的桃子的個數(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)在只有一天的時候那就只剩下一個! return 1; return 2 * f(n - 1) + 2; } }
看完上述內(nèi)容,你們掌握使用Java怎么實現(xiàn)一個猴子吃桃問題算法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!