斐波那契數列


1 什么是斐波那契數列

斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardo 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*)在現代物理、准晶體結構、化學等領域,斐波納契數列都有直接的應用。

                                                    ——摘自百度百科

通項公式:an=an-1+an-2

 

2 公式的應用:

黃金分割

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

楊輝三角

楊輝三角左對齊,將同一斜行的數加起來,即得一數列 1、1、2、3、5、8

矩形面積

斐波那契數列與矩形面積的生成相關,數列前幾項的平方和可以看做不同大小的正方形,由於斐波那契的遞推公式,它們可以拼成一個大的矩形。這樣所有小正方形的面積之和等於大矩形的面積。

尾數循環

斐波那契數列的個位數:一個60步的循環,進一步,最后兩位數是一個300步的循環,最后三位數是一個1500步的循環,最后四位數是一個15000步的循環,最后五位數是一個150000步的循環。

自然界中“巧合”

樹木生長時的枝條,生物學上著名的“魯德維格定律”。
一些花的花瓣數也程斐波那契數列:百合花花瓣數目為 3,梅花 5 瓣,飛燕草 8 瓣,萬壽菊 13 瓣,向日葵 21 或 34 瓣,雛菊有 34、55 和 89 三個數目的花瓣。
斐波那契螺旋。
等等
                                                                   ——摘自百度百科

可見,斐波那契數列應用廣泛。

3 程序實現:

利用C遞歸實現斐波那契數列:

 

#include <stdio.h>
int Fibonaci(int n){
    if(n<=0)
        return 0;
    if(n<=3)
        return 1;
    int v;
    v=Fibonaci(n-1)+Fibonaci(n-2);
    return v;
}
int main()
{
    int number;
    scanf("%d",&number);
    if (number<0)
        printf("error");
    else
    {
        int a=0;
        a=Fibonaci(number);
        printf("%d",a);
    }
    return 0;
}

 

利用python遞歸實現斐波那契數列:

 

 1 def fabonacqi(n):
 2     if n <= 0:
 3         return 0
 4     elif n <= 2:
 5         v = 1
 6         return v
 7     v = fabonacqi(n - 1) + fabonacqi(n - 2)
 8     return v
 9 
10 a=int(input())
11 if a<0:
12     print("error")
13 else:
14     print(fabonacqi(a))

 

4 遞歸函數:

編程語言中,函數Func(Type a,……)直接或間接調用函數本身,則該函數稱為遞歸函數。

優點結構清晰,可讀性強,而且容易用數學歸納法來證明算法的正確性,因此它為設計算法、調試程序帶來很大方便。
缺點
遞歸算法的運行效率較低,無論是耗費的計算時間還是占用的存儲空間都比非遞歸算法要多。例如遞歸算斐波那契數列,number=50,就運行的很慢了,但是如果用遞推,就會快很多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM