首頁  >  文章  >  Java  >  Java中猴子吃桃問題演算法實現的範例

Java中猴子吃桃問題演算法實現的範例

黄舟
黄舟原創
2017-10-18 10:24:191955瀏覽

這篇文章主要介紹了Java實現的猴子吃桃問題演算法,簡單描述了猴子吃桃問題並結合實例形式給出了java解決猴子吃桃問題的具體實現技巧,需要的朋友可以參考下

本文實例講述了Java實現的猴子吃桃問題演算法。分享給大家供大家參考,具體如下:

猴子吃桃問題

#概述:猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又吃了一個;第二天又將剩下的桃子吃掉了一半,又多吃了一個;以後每天都吃前一天身下的一半零一個,到第n天再想吃的時候就只剩下一個桃子了,求第一天共摘了幾個桃子?

想法及演算步驟(求出共摘多少桃子的函數表達式):

離現在的天數作為變數

f(1) = 1 (剩下桃子的數目)
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 (這是我們想要的公式)

然後可以求出離現在任何天數時,猴子共摘下的桃子!

例如f(10)意思就是離現在10天的時候(10天以前猴子擁有的桃子的個數)!

下面給出具體的程式碼:


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)   //离现在只有一天的时候那就只剩下一个!
    return 1;
    return 2 * f(n - 1) + 2;
  }
}

以上是Java中猴子吃桃問題演算法實現的範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn