資料結構與演算法 五 兔子數列 斐波那契數列

2021-07-10 04:43:50 字數 1579 閱讀 7201

斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n≥2,n∈n*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從1963起出版了以《斐波納契數列季刊》為名的乙份數學雜誌,用於專門刊載這方面的研究成果。

斐波那契數列又因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為「兔子數列」。 一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那麼一年以後可以繁殖多少對兔子? 我們不妨拿新出生的一對小兔子分析一下: 第乙個月小兔子沒有繁殖能力,所以還是一對 兩個月後,生下一對小兔對數共有兩對 三個月以後,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對 依次類推可以列出下表:

經過月數01

2345

6789

1011

12幼仔對數10

1123

581321

3455

89成兔對數01

1235

8132134

5589

144總體對數11

2358

1321

3455

89144

233

幼仔對數=前月成兔對數 成兔對數=前月成兔對數+前月幼仔對數 總體對數=本月成兔對數+本月幼仔對數 可以看出幼仔對數、成兔對數、總體對數都構成了乙個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項。 這個數列是義大利中世紀數學家斐波那契在《算盤全書》中提出的,這個級數的通項公式,除了具有a(n+2)=an+a(n+1)的性質外,還可以證明通項公式為:an=(1/√5)*(n=1,2,3…..)

c++

#include 

using

namespace

std;

int rabbit(int i)else

}int main()

有趣的是,這樣乙個完全是自然數的數列,通項公式卻是用無理數來表達的。而且當n趨向於無窮大時,前一項與後一項的比值越來越逼近**分割0.618(或者說後一項與前一項的比值小數部分越來越逼近0.618)。 1÷1=1,1÷2=0.5,2÷3=0.666…,3÷5=0.6,5÷8=0.625…………,55÷89=0.617977……………144÷233=0.618025…46368÷75025=0.6180339886…… 越到後面,這些比值越接近**比. 證明

a[n+2]=a[n+1]+a[n]。 兩邊同時除以a[n+1]得到: a[n+2]/a[n+1]=1+a[n]/a[n+1]。 若a[n+1]/a[n]的極限存在,設其極限為x, 則limn->;;∞=limn->;;∞=x。 所以x=1+1/x。 即x²=x+1。 所以極限是**分割比..

通過上面一些簡單的講解,

相信朋友們已經知道其原理及特性了。

本人能力有限,

如發現錯誤或不合理歡迎指正…

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

題目 有一對兔子,從出生後第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 第五個月...