1. 程式人生 > >有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少?(遞迴,裴波那契數列)

有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數為多少?(遞迴,裴波那契數列)

/**
	 * @Desc:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
	 * 假如兔子都不死,問每個月的兔子對數為多少? 程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
	 * :解題思路:我們把兔子剛出生是稱為小兔子,第二個月是中兔子,第三個月是大兔子;那麼就有如下結論
	 * 			        小  中  大
	 * 第一個月的兔子為:1 0 0
	 * 第二個月的兔子為:0 1 0
	 * 第三個月的兔子為:1 0 1
	 * 第四個月的兔子為:1 1 1
	 * 第五個月的兔子為:2 1 2
	 * 第六個月的兔子為:3 2 3
	 * 第七個月的兔子為:5 3 5
	 * 得出規律 從第三個月開始 第一個月兔子的數量就是前兩個月的兔子數量之和,即為裴波那契數列。
	 * 	 */
/** * @month:月份 * @return int:兔子的數量 */ public static int rabbit(int month) { //第一個月和第二個月兔子的數量都是一,因為第一隻兔子還沒有長成大兔子,沒有繁殖能力。 if(month==1||month==2) return 1; //根據裴波那契數列: month月的兔子對數 = (month-1)月的兔子對數 + (month-2)月的兔子對數 return rabbit(month-1)+rabbit(month-2); } public static void
main(String[] args) { int month = 8; System.out.println("第"+month+"個月,有"+rabbit(month)+"對兔子"); }

執行結果: 第8個月,有21對兔子