有趣的兔子(斐波那契數列)

2021-08-21 21:46:58 字數 1592 閱讀 3932

如果每對兔子每月繁殖一對子兔,而子兔在出生後第二個月就有生殖能力,試問一對兔子一年能繁殖多少對兔子?可以這樣思考:第乙個月後即第二個月時,1對兔子變成了兩對兔子,其中一對是它本身,另一對是它生下的幼兔. 第三個月時兩對兔子變成了三對,其中一對是最初的一對,另一對是它剛生下來的幼兔,第三對是幼兔長成的大兔子. 第四個月時,三對兔子變成了五對,第五個月時,五對兔子變成了八對,按此方法推算,第六個月是13對兔子,第七個月是21對兔子„„,裴波那契得到乙個數列,人們將這個數列前面加上一項1,成為「裴波那契數列」,即:1,1,2,3,5,8,13„.

月份成年兔子數

幼年兔子數

總數兔子的對數12

0212

2242

3426

3464

105510

61686

1610

2613726

1642218

4226

6834

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

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

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

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

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

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

這個數列從第3項開始,每一項都等於前兩項之和,即:f(0)=0,f(1)=1, f(n)=f(n-1)+f(n-2)(n>=2,n∈n*)在許多的學科領域,斐波納契數列都有直接的應用。

根據上面的**可以計算兔子的數量,實現方式一,例如:

// 月份

int month = 1;

// 兔子的對數

int rabbitpair = 1;

// 成年兔子數

int rabbitadult = 2;

// 幼年兔子數

int rabbitinfancy = 0;

// 上個月的幼年兔子數

int beforerabbitinfancy = 0;

// 兔子的總數

int rabbitsum = 0;

console.writeline("請輸入月份:");

int numb = int.parse(console.readline());

for (; month <= numb; month++)

else

if (month == 2)

else

if (month == 3)

else

}console.writeline("月後,有對兔子,兔子的總數是只,成年兔子只,幼年兔子只",

numb, rabbitsum,rabbitadult,rabbitinfancy,rabbitpair);

根據上面的**可以計算兔子的數量,實現方式二,例如:

class program

}private

static

intgetrabbitpair(int n)

else

if(n==2)

else

}}

兔子生兔子問題 斐波那契數列

題目 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子。假如兔子都不死,要求輸出一年內兔子的數量是多少。1 1 2 3 5 8 如下 兔子問題 斐波那契 public class homework05 static intfab int month stati...

java兔子問題(斐波那契數列)

題目 古典問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子 假如兔子都不死,問每個月的兔子總數為多少?斐波那契數列,沒乙個值都等於前兩個值之和 author gkf46762 public class rabbit public static int g...

斐波那契數列 兔子繁殖問題

古典問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第3個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?演算法分析 假設給兔子的對數編號 第乙個月 1 sum 1 第二個月 1 sum 1 第三個月 1生2,sum 2 第四個月 1生3,2,sum 3 第五個月...