您好,登錄后才能下訂單哦!
本文實例講述了java基于斐波那契數列解決兔子問題。分享給大家供大家參考,具體如下:
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
package com.java.recursion; /** * @描述 三種方法實現斐波那契數列 * @項目名稱 Java_DataStruct * @包名 com.java.recursion * @類名 Fibonacci * @author chenlin */ public class Fibonacci { /** * 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死, * 問每個月的兔子總數為多少? * 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;//上個月的兔子的對數 int current = 1;//當月的兔子的對數 int total = 1; for (int i = 3; i <= month; i++) { //總數= 上次+當前 total = last + current; last= current ; current = total; } return total; } /** * 使用數組 * * @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("億速云測試結果:"); System.out.println(getTotalByAdd(3)); System.out.println(getTotalByAdd(4)); System.out.println(getTotalByAdd(5)); System.out.println(getTotalByAdd(6)); } }
運行結果:
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。