日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言斐波那契数列_神奇的数列——斐波那契数列

發布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言斐波那契数列_神奇的数列——斐波那契数列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

斐波那契數列之美

斐波那契是一位數學家,生于公元1170年,籍貫大概是比薩,卒于1240年后。1202年,他撰寫了《珠算原理》(Liber Abaci)一書。他是第一個研究了印度和阿拉伯數學理論的歐洲人。斐波那契數列因他解決兔子繁殖的應用題而引入,故又稱為“兔子數列”。除此之外,他對歐洲數學的另一大貢獻就是引進阿拉伯數字,從而取代了復雜的羅馬計數法。

有這樣一個數列:1、1、2、3、5、8、13、21、34……前兩個元素為1,其他元素均為前兩個元素和。在數學上以如下遞歸的方法定義:

這就是斐波那契數列的數學定義。

奇妙的屬性

隨著數列項數的增加,前一項與后一項之比越來越逼近黃金分割的數值0.6180339887……

從第二項開始,每個奇數項的平方都比前后兩項之積多1,每個偶數項的平方都比前后兩項之積少1。(注:奇數項和偶數項是指項數的奇偶,而并不是指數列的數字本身的奇偶,比如第四項3是奇數,但它是偶數項,第五項5是奇數,它是奇數項,如果認為數字3和5都是奇數項,那就誤解題意,怎么都說不通)

如果你看到有這樣一個題目:

某人把一個8*8的方格切成四塊,拼成一個5*13的長方形,故作驚訝地問你:為什么64=65?其實就是利用了斐波那契數列的這個性質:5、8、13正是數列中相鄰的三項,事實上前后兩塊的面積確實差1,只不過后面那個圖中有一條細長的狹縫,一般人不容易注意到。

斐波那契數列的第n項同時也代表了集合{1,2,...,n}中所有不包含相鄰正整數的子集個數。

斐波那契數列(f(n),f(0)=0,f(1)=1,f(2)=1,f(3)=2……)的其他性質:

f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1

f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)

f(2)+f(4)+f(6)+…+f(2n) =f(2n+1)-1

[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)

f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1

f(m+n-1)=f(m-1)·f(n-1)+f(m)·f(n)

利用這一點,可以用程序編出時間復雜度僅為O(log n)的程序。怎樣實現呢?偽代碼描述一下?

[f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1)

f(2n-1)=[f(n)]^2-[f(n-2)]^2

3f(n)=f(n+2)+f(n-2)

f(2n-2m-2)[f(2n)+f(2n+2)]=f(2m+2)+f(4n-2m) [ n〉m≥-1,且n≥1]

f(2n+1)=[f(n)]^2+[f(n+1)]^2

算法之矩陣計算斐波那契數列

從第三項開始,每一項都是前兩項之和。 F(n)=F(n?1)+F(n?2), n?3 把斐波那契數列中 相鄰的兩項F(n)和F(n?1)寫成一個2×1的矩陣。

求F(n)等于求二階矩陣的n - 1次方,結果取矩陣第一行第一列的元素。

問題轉換為二階矩陣的n次冪。而計算二階矩陣的N次冪運算,由于二階矩陣乘法滿足結合律,這樣,可以快速計算二階矩陣的n次冪運算。

假設A為一個二階矩陣,則A的冪運算滿足下面的條件:

A**6=A**3?A**3

A**7=A**3?A**3?A**1=A**4*A**2*A**1

可以類似地把A看做是二進制中的2,2**7=2**4*2**2*2**1也就是說可以把矩陣的冪轉換成二進制來表示。從而可以將n次冪拆解成長度為logn的二進制數來表示:7=111(二進制)。這就是快速求二階矩陣的核心方法。

代碼實現:

完整代碼:

斐波那契數列的應用

總結

以上是生活随笔為你收集整理的c语言斐波那契数列_神奇的数列——斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。