導航:首頁 > 源碼編譯 > 斐波那契演算法視頻

斐波那契演算法視頻

發布時間:2023-02-01 01:26:57

① 斐波那契(Fibonacci)數列的前兩項是1、1,後面每一項是前兩項的和。求10000000以內最大的斐波那契數。

#include"iostream.h"

voidmain()

{

inta[10000],n;

a[1]=1;

a[2]=1;

for(n=3;;n++)

{

a[n]=a[n-1]+a[n-2];

if(a[n]>10000000)

break;

}

cout<<a[n-1]<<endl;

}

c++……這種事情還是交給計算機比較好嘛~

② 小於一百的斐波那契數的演算法

即斐波那契數列,「斐波那契數列」的發明者,是義大利數學家列昂納多·斐波那契(Leonardo Fibonacci,生於公元1170年,卒於1240年。籍貫大概是比薩)。他被人稱作「比薩的列昂納多」。1202年,他撰寫了《珠算原理》(Liber Abaci)一書。他是第一個研究了印度和阿拉伯數學理論的歐洲人。他的父親被比薩的一家商業團體聘任為外交領事,派駐地點相當於今日的阿爾及利亞地區,列昂納多因此得以在一個阿拉伯老師的指導下研究數學。他還曾在埃及、敘利亞、希臘、西西里和普羅旺斯研究數學。
斐波那契數列指的是這樣一個數列:1,1,2,3,5,8,13,21……
這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】
很有趣的是:這樣一個完全是自然數的數列,通項公式居然是用無理數來表達的。

【該數列有很多奇妙的屬性】
比如:隨著數列項數的增加,前一項與後一項之比越逼近黃金分割0.6180339887……
還有一項性質,從第二項開始,每個奇數項的平方都比前後兩項之積多1,每個偶數項的平方都比前後兩項之積少1。
如果你看到有這樣一個題目:某人把一個8*8的方格切成四塊,拼成一個5*13的長方形,故作驚訝地問你:為什麼64=65?其實就是利用了斐波那契數列的這個性質:5、8、13正是數列中相鄰的三項,事實上前後兩塊的面積確實差1,只不過後面那個圖中有一條細長的狹縫,一般人不容易注意到。
如果任意挑兩個數為起始,比如5、-2.4,然後兩項兩項地相加下去,形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你將發現隨著數列的發展,前後兩項之比也越來越逼近黃金分割,且某一項的平方與前後兩項之積的差值也交替相差某個值。
斐波那契數列的第n項同時也代表了集合{1,2,...,n}中所有不包含相鄰正整數的子集個數。

【斐波那契數列別名】
斐波那契數列又因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為「兔子數列」。
斐波那契數列
一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔都不死,那麼一年以後可以繁殖多少對兔子?
我們不妨拿新出生的一對小兔子分析一下:
第一個月小兔子沒有繁殖能力,所以還是一對;
兩個月後,生下一對小兔民數共有兩對;
三個月以後,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對;
------
依次類推可以列出下表:
經過月數:0123456789101112
兔子對數:1123581321345589144233
表中數字1,1,2,3,5,8---構成了一個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項。
這個數列是義大利中世紀數學家斐波那契在<算盤全書>中提出的,這個級數的通項公式,除了具有a(n+2)=an+a(n+1)/的性質外,還可以證明通項公式為:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)

【斐波那挈數列通項公式的推導】

斐波那契數列:1,1,2,3,5,8,13,21……
如果設F(n)為該數列的第n項(n∈N+)。那麼這句話可以寫成如下形式:
F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)
顯然這是一個線性遞推數列。

通項公式的推導方法一:利用特徵方程
線性遞推數列的特徵方程為:
X^2=X+1
解得
X1=(1+√5)/2, X2=(1-√5)/2.
則F(n)=C1*X1^n + C2*X2^n
∵F(1)=F(2)=1
∴C1*X1 + C2*X2
C1*X1^2 + C2*X2^2
解得C1=1/√5,C2=-1/√5
∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】
通項公式的推導方法二:普通方法
設常數r,s
使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
則r+s=1, -rs=1
n≥3時,有
F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]
F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]
……
F(3)-r*F(2)=s*[F(2)-r*F(1)]
將以上n-2個式子相乘,得:
F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]
∵s=1-r,F(1)=F(2)=1
上式可化簡得:
F(n)=s^(n-1)+r*F(n-1)
那麼:
F(n)=s^(n-1)+r*F(n-1)
= s^(n-1) + r*s^(n-2) + r^2*F(n-2)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)
……
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)
(這是一個以s^(n-1)為首項、以r^(n-1)為末項、r/s為公差的等比數列的各項的和)
=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)
=(s^n - r^n)/(s-r)
r+s=1, -rs=1的一解為 s=(1+√5)/2, r=(1-√5)/2
則F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}

③ 斐波那契數列演算法

Private Function f(ByVal n As Integer) As Double'斐波那契的n項的值
Dim r As Double
If n = 0 Then
r = 0
End If
If n = 1 Then
r = 1
End If
If n > 1 Then
r = f(n - 1) + f(n - 2)
End If
f = r
End Function

④ 斐波那契數列遞歸演算法是什麼

斐波那契數列遞歸演算法是斐波那契數列的一種演算法,又稱為黃金分割數列,其演算法規律為F(n)=F(n-1)+F(n-2)。

由於是以兔子的繁殖為例子引入的,因此也叫「兔子數列」。它指的是這樣一個數列:0、1、1、2、3、5、8、13……,從這組數可以很明顯看出這樣一個規律:從第三個數開始,後邊一個數一定是在其之前兩個數的和。

可以用以下兩種非遞歸演算法來實現:

1、時間復雜度為O(N),空間復雜度為O(N):

創建一個數組,每次將前兩個數相加後直接賦給後一個數。這樣的話,有N個數就創建一個包含N個數的一維數組,所以空間復雜度為O(N);由於只需從頭向尾遍歷一邊,時間復雜度為O(N)。

2、時間復雜度為O(N),空間復雜度為O(1):

藉助兩個變數 first 和 second ,每次將 first 和 second 相加後賦給 third ,再將 second 賦給 first ,third 賦給 second,如此循環。

⑤ 斐波那契數列的演算法

斐波那契數列指的是這樣一個數列:1、1、2、3、5、8、13、21、……
這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n
-
[(1-√5)/2]^n}(又叫「比內公式」,是用無理數表示有理數的一個範例。)(√5表示根號5)

⑥ 08《演算法入門教程》遞歸演算法之斐波那契數列

本節內容是遞歸演算法系列之一:斐波那契數列遞歸求解,主要介紹了斐波那契數列的定義,然後用遞歸的實現思想分析了一下斐波那契數列,最後給出了基於 java 代碼應用遞歸思想實現斐波那契數列的代碼實現及簡單講解。

斐波那契數列(Fibonacci sequence),也稱之為黃金分割數列,由義大利數學家列昂納多・斐波那契(Leonardo Fibonacci)提出。斐波那契數列指的是這樣的一個數列:1、1、2、3、5、8、13、21、34、……,這個數列從第 3 項開始,每一項都等於前面兩項之和。在數學上,斐波那契數列可以被遞推的方法定義如下:

斐波那契數列是數學上面一個經典的例子,並且在日常生活中有很多應用,他還與黃金分割有著密不可分的聯系,而且當 n 趨向於無窮大時,前一項與後一項的比值越來越逼近黃金分割值 0.618。

在這一節中,我們就需要利用遞歸的思想去求解斐波那契數列,當給出一個斐波那契中第幾項的數字,然後求解出對應的斐波那契數值。在之前,我們已經定義了遞歸演算法的相關概念,並且明確了需要應用遞歸時候的三要素:

接下來,我們將利用遞歸的知識來解決斐波那契數列問題,明確在斐波那契數列求解問題中的遞歸三要素分別是什麼。

例如,當我們求解斐波那契數列中的 F (5) 時,按照定義,我們有:

在說明斐波那契數列的遞歸描述之後,我們看看如何用 Java 代碼來實現對斐波那契數列的計算。

運行結果如下:

代碼中的第 4 行至第 8 行分別調用斐波那契數列計算函數,計算出斐波那契數列中對應 n=1,2,3,4,5 時斐波那契數列的取值,進行結果比較,判斷斐波那契數列程序實現是否正確。代碼中的第 12 行至第 20 行是斐波那契數列應用遞歸方法進行斐波那契數列的計算,按照遞歸的三要素進行計算處理。

本節主要介紹了用遞歸思想求解斐波那契數列,在學完本節課程之後,我們了解到了什麼是斐波那契數列,並且將遞歸演算法在斐波那契數列中進行了實際應用,需要掌握斐波那契數列的遞歸求解方法,並自己可以實現相關的代碼實現,並清楚裡面的每一步邏輯。

⑦ 斐波那契數列的演算法

#include "stdio.h"
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n"); /*控制輸出,每行四個*/
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/
}
}

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

⑧ 斐波那契數列

用通項公式
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
double fn; //第1000個用long存不下,要用double
fn = pow((1+sqrt(5))/2, 1000)/sqrt(5) - pow((1-sqrt(5))/2, 1000)/sqrt(5); //把裡面的1000換成N,就可以求N項
printf("F(1000) = %lf\n", fn);
return 0;
}

⑨ 每日演算法10:斐波那契數列

【題目】
斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……

特別指出:第0項是0,第1項是第一個1。

這個數列從第三項開始,每一項都等於前兩項之和。

每個數除以數位上所有數字之和,最小能整除的數,整理出11個。

【答案】
2
3
5
8
21
144
2584
14930352
86267571272
498454011879264
160500643816367088

【解決】
package utils;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class NumberUtil {
public static void main(String[] args) {
List<Long> list = getNumList(new ArrayList<>(),1,1,11);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
public static List<Long> getNumList(List<Long> list,long i,long j,int count){
long num = i+j;
char[] numString = String.valueOf(num).toCharArray();
long sum = 0;
for(int m=0;m<numString.length;m++){
sum+=numString[m]-'0';
}
if(num%sum==0){
list.add(num);
}
if(list.size()==count){
return list;
}else {
return getNumList(list, j, i + j,count);
}
}
}

⑩ 斐波那契數列演算法

斐波那契數列,又稱黃金分割數列,指的是這樣一個數列: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起出版了以《斐波納契數列季刊》為名的一份數學雜志,用於專門刊載這方面的研究成果。

我們以求解f(10)作為例子來分析遞歸求解的過程。要求得f(10),需要求得f(9)和f(8)。同樣,要求得f(9),要先求得f(8)和f(7)……我們用樹形結構來表示這種依賴關系

在這棵樹中有很多結點會重復的,而且重復的結點數會隨著n的增大而急劇增加。這意味這計算量會隨著n的增大而急劇增大。事實上,用遞歸方法計算的時間復雜度是以n的指數的方式遞增的,時間復雜度約等於O(2^n)

空間復雜度分析

在方法一的基礎上改進

其實改進的方法並不復雜。上述方法之所以慢是因為重復的計算太多,只要避免重復計算就行了。比如我們可以把已經得到的數列中間項保存起來,如果下次需要計算的時候我們先查找一下,如果前面已經計算過了就不用再次計算了。演算法步驟如下

一目瞭然,O(1) 約等於O(1)

這個是我目前見過最流弊的方式,但是前提你得先會用公式
時間復雜度是O(logn),就問你流弊不流弊。在介紹這種方法之前,先介紹一個數學公式:

閱讀全文

與斐波那契演算法視頻相關的資料

熱點內容
程序員溝通時笑死 瀏覽:389
易語言網路共享下載源碼 瀏覽:807
誰有那種電影你懂得 瀏覽:194
台灣男同性戀片 瀏覽:70
安卓應用包安裝程序怎麼清除數據 瀏覽:61
催眠合集txt下載 瀏覽:323
韓國車震大尺度電影有哪些 瀏覽:335
割乳酷刑電影 瀏覽:234
怎麼給電腦app分身 瀏覽:821
資治通鑒pdf中華書局 瀏覽:187
穿越民國種馬 瀏覽:628
新搬來的新居電影 瀏覽:561
有個小說主角叫姜 瀏覽:602
重生德國一戰的小說 瀏覽:249
給點能看的網站 瀏覽:670
77電影網 瀏覽:68
在線可以觀看的網站 瀏覽:827
電梯日本電影 瀏覽:73
有部電影裡面有兩個人一個拿白色光劍 瀏覽:63
程序員如何自行車通勤 瀏覽:213