溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Java怎么實(shí)現(xiàn)一個(gè)猴子吃桃問題算法

發(fā)布時(shí)間:2021-04-15 17:33:21 來源:億速云 閱讀:259 作者:Leah 欄目:編程語言

使用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è)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(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)容。

AI