Java實現(xiàn)的猴子吃桃問題算法示例
本文實例講述了Java實現(xiàn)的猴子吃桃問題算法。分享給大家供大家參考,具體如下:
猴子吃桃問題
概述:猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又吃了一個;第二天又將剩下的桃子吃掉了一半,又多吃了一個;以后每天都吃前一天身下的一半零一個,到第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;
}
}
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
- Java矩陣連乘問題(動態(tài)規(guī)劃)算法實例分析
- Java基于動態(tài)規(guī)劃法實現(xiàn)求最長公共子序列及最長公共子字符串示例
- Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)代碼
- Java動態(tài)規(guī)劃之編輯距離問題示例代碼
- Java面試之動態(tài)規(guī)劃與組合數(shù)
- Java算法之最長公共子序列問題(LCS)實例分析
- 淺談java實現(xiàn)背包算法(0-1背包問題)
- Java基于分治算法實現(xiàn)的棋盤覆蓋問題示例
- Java數(shù)據(jù)結構及算法實例:漢諾塔問題 Hanoi
- java動態(tài)規(guī)劃算法——硬幣找零問題實例分析
相關文章
Spring Boot 與 Kotlin 上傳文件的示例代碼
這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
tomcat報錯:Wrapper cannot find servlet class ...問題解決
這篇文章主要介紹了tomcat報錯:Wrapper cannot find servlet class ...問題解決的相關資料,需要的朋友可以參考下2016-11-11

