java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題實例
本文實例講述了java基于斐波那契數(shù)列解決兔子問題。分享給大家供大家參考,具體如下:
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?
package com.java.recursion; /** * @描述 三種方法實現(xiàn)斐波那契數(shù)列 * @項目名稱 Java_DataStruct * @包名 com.java.recursion * @類名 Fibonacci * @author chenlin */ public class Fibonacci { /** * 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死, * 問每個月的兔子總數(shù)為多少? * month 1 2 3 4 5 6 * borth 0 0 1 1 2 3 * total 1 1 2 3 5 8 */ /** * 疊加法 * * @param month * @return */ public static int getTotalByAdd(int month) { int last = 1;//上個月的兔子的對數(shù) int current = 1;//當(dāng)月的兔子的對數(shù) int total = 1; for (int i = 3; i <= month; i++) { //總數(shù)= 上次+當(dāng)前 total = last + current; last= current ; current = total; } return total; } /** * 使用數(shù)組 * * @param month * @return */ public static int getTotalByArray(int month) { int arr[] = new int[month]; arr[1] = arr[2] = 1; for (int i = 2; i < month; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[month - 1] + arr[month - 2]; } public static int getTotalByRecusion(int month) { if (month == 1 || month == 2) { return 1; } else { return getTotalByRecusion(month - 1) + getTotalByRecusion(month - 2); } } public static void main(String[] args) { System.out.println("腳本之家測試結(jié)果:"); System.out.println(getTotalByAdd(3)); System.out.println(getTotalByAdd(4)); System.out.println(getTotalByAdd(5)); System.out.println(getTotalByAdd(6)); } }
運行結(jié)果:
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐
本文主要介紹了SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10@RequiredArgsConstructor如何實現(xiàn)構(gòu)造器注入
這篇文章主要介紹了@RequiredArgsConstructor如何實現(xiàn)構(gòu)造器注入問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09spring boot教程之產(chǎn)生的背景及其優(yōu)勢
這篇文章主要介紹了spring boot教程之產(chǎn)生的背景及其優(yōu)勢的相關(guān)資料,需要的朋友可以參考下2022-08-08使用SpringCloudApiGateway之支持Cors跨域請求
這篇文章主要介紹了使用SpringCloudApiGateway之支持Cors跨域請求的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07解決idea不支持SpringBoot yml文件的圖文教程
這篇文章主要介紹了解決idea不支持SpringBoot yml文件,需要的朋友可以參考下2018-06-06Java調(diào)用python代碼的五種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于Java調(diào)用python代碼的五種方式,在Java中調(diào)用Python函數(shù)的方法有很多種,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09