這篇文章主要介紹了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中文網其他相關文章!