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)文章
SpringBoot+Mybatis plus實(shí)現(xiàn)多數(shù)據(jù)源整合的實(shí)踐
本文主要介紹了SpringBoot+Mybatis plus實(shí)現(xiàn)多數(shù)據(jù)源整合的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
@RequiredArgsConstructor如何實(shí)現(xiàn)構(gòu)造器注入
這篇文章主要介紹了@RequiredArgsConstructor如何實(shí)現(xiàn)構(gòu)造器注入問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
spring boot教程之產(chǎn)生的背景及其優(yōu)勢(shì)
這篇文章主要介紹了spring boot教程之產(chǎn)生的背景及其優(yōu)勢(shì)的相關(guān)資料,需要的朋友可以參考下2022-08-08
Java使用BigDecimal公式精確計(jì)算及精度丟失問(wèn)題
在工作中經(jīng)常會(huì)遇到數(shù)值精度問(wèn)題,比如說(shuō)使用float或者double的時(shí)候,可能會(huì)有精度丟失問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Java使用BigDecimal公式精確計(jì)算及精度丟失問(wèn)題的相關(guān)資料,需要的朋友可以參考下2023-01-01
使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求
這篇文章主要介紹了使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
解決idea不支持SpringBoot yml文件的圖文教程
這篇文章主要介紹了解決idea不支持SpringBoot yml文件,需要的朋友可以參考下2018-06-06
Java調(diào)用python代碼的五種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于Java調(diào)用python代碼的五種方式,在Java中調(diào)用Python函數(shù)的方法有很多種,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09

