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,就運行的很慢了,但是如果用遞推,就會快很多。