經典的兔子生兔子問題(C 遞迴解法)

2021-10-10 17:34:11 字數 970 閱讀 7577

古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

思路:先求出每個月新增的兔子,再用迴圈求和即可算出這個月總的兔子數。

月份  新增加兔子

1    1

2    0

3    1

4    1

5    1 + 1

6    1 + 1 + 1

7    (1 + 1 + 1)6月份新增的兔子 + (1 + 1)5月份新增的兔子

n    n - 1月份新增的兔子 + n - 2月份新增的兔子

因此,只要上個月有新增的兔子後,這個月都會新增和上個月新兔子數量同樣的兔子,同時還會新增上上個月兔子數量的新兔子。這兩個數量相加就得到這個月一共新增加的兔子。

用遞迴的方法求出每個月新增的兔子(自定義函式):

static int newrabbitofmonth(int n)

else if(n == 2)

else

}

用迴圈求和的方法求出每個月的兔子總數(主函式):

static void main(string args)

console.write("第" + n + "個月共有" + sumrabbitofmonth + "對兔子");

console.readline();

}

思考:

每個月新增的兔子數量實際上是乙個斐波拉契數列:

1,0,1,1,2,3,5…

每個月總的兔子數量也是乙個斐波拉契數列:

1,1,2,3,5,8,13…

下面個數列每一項減去上面個數量每一項得到的新數列也是斐波拉契數列:

0,1,1,2,3,5,8…

結論:乙個斐波拉契數量的每一項減去另乙個斐波拉契數列的對應每一項得到的新數列也是斐波拉契數列。(待驗證)

兔子生兔子問題

問題描述 兔子生兔子問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對 兔子,假如兔子都不死,問每個月的兔子總數為多少?假設我們要求列印出第乙個月到第二十個月的兔子總數 可以得出規律 第乙個月的兔子總數是1,第二個月的兔子總數是1,從第三個月開始,兔子總數是前...

兔子生兔子問題

問題描述 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少 分析 這道題我們可以把兔子分為三個階段,幼崽 成年,生育 實際月份 幼崽數量 成兔數量 兔子總數11 0120 1131 1241 2352 3563 587...

經典遞迴 兔子繁殖問題

題目 已知有一對兔子,每個月可以生一對兔子,而小兔子乙個月後又可以生一對小兔子 比如 2月份出生的小兔子4月份可以生育 也就是說,兔子的對數為 第乙個月1對,第二個月2對,第三個月3對,第四個月5對 假設兔子的生育期為兩年,且不死。那麼問題來了,你能說出每個月的兔子數麼?輸入格式 輸入乙個數n,表示...