java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問(wèn)題實(shí)例
本文實(shí)例講述了java基于斐波那契數(shù)列解決兔子問(wèn)題。分享給大家供大家參考,具體如下:
題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
package com.java.recursion;
/**
* @描述 三種方法實(shí)現(xiàn)斐波那契數(shù)列
* @項(xiàng)目名稱 Java_DataStruct
* @包名 com.java.recursion
* @類名 Fibonacci
* @author chenlin
*/
public class Fibonacci {
/**
* 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,
* 問(wèn)每個(gè)月的兔子總數(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;//上個(gè)月的兔子的對(duì)數(shù)
int current = 1;//當(dāng)月的兔子的對(duì)數(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("腳本之家測(cè)試結(jié)果:");
System.out.println(getTotalByAdd(3));
System.out.println(getTotalByAdd(4));
System.out.println(getTotalByAdd(5));
System.out.println(getTotalByAdd(6));
}
}
運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java打印斐波那契前N項(xiàng)的實(shí)現(xiàn)示例
- Java利用遞歸算法實(shí)現(xiàn)查詢斐波那契數(shù)
- JAVA遞歸與非遞歸實(shí)現(xiàn)斐波那契數(shù)列
- 三種java編程方法實(shí)現(xiàn)斐波那契數(shù)列
- 遞歸之斐波那契數(shù)列java的3種方法
- Java遞歸實(shí)現(xiàn)斐波那契數(shù)列
- java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法
- java實(shí)現(xiàn)斐波那契數(shù)列的3種方法
- SpringBoot搭建Dubbo項(xiàng)目實(shí)現(xiàn)斐波那契第n項(xiàng)詳解
相關(guān)文章
Java如何使用multipartFile對(duì)象解析Execl
本文介紹了如何使用Spring的MultipartFile類解析Excel文件(.xls和.xlsx),包括文件上傳、數(shù)據(jù)校驗(yàn)、輸入流獲取、文件解析、數(shù)據(jù)保存和異常處理的詳細(xì)步驟2025-02-02
SpringBoot深入分析webmvc和webflux的區(qū)別
這篇文章主要介紹了SpringBoot深入分析webmvc和webflux的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02
SpringBoot使用AOP實(shí)現(xiàn)防重復(fù)提交功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何使用AOP實(shí)現(xiàn)防重復(fù)提交功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
java接口中的代理設(shè)計(jì)模式代碼時(shí)實(shí)踐
這篇文章主要介紹了java接口中的代理設(shè)計(jì)模式代碼時(shí)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
java中@Configuration使用場(chǎng)景
本文主要介紹了java中@Configuration使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問(wèn)題
這篇文章主要介紹了解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+JSP+Easyui+maven+mysql實(shí)現(xiàn)一個(gè)養(yǎng)老院管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2022-03-03

