?菲波納契數列又稱"菲波納契神奇數列",是由13世紀的意大利數學家菲波納契提出的,當時是和兔子的繁殖問題有關的,它是一個很重要的數學模型。這個問題是:有小兔一對,若第二個月它們成年,第三個月生下小兔一對,以后每月生產一對小兔,而所生小兔亦在第二個月成年,第三個月生產另一對小兔,以后亦每月生產小兔一對,假定每產一對小兔必為一雌一雄,且均無死亡,試問一年后共有小兔幾對?
案例分析
以1對新出生小兔子為例。
第1個月:小兔子1沒有繁殖能力,所以還是1對。
第2個月:小兔子1進入成熟期,還是1對。
第3個月:小兔子1生了1對小兔子2,本月共有2對兔子。
第4個月:小兔子1又生了1對小兔子3,本月共有3對兔子。
第5個月:小兔子1又生了1對小兔子4,而在第3個月出生的小兔子2也生了1對小兔子5,本月共有5對兔子。
第6個月:小兔子1,2,3各生1對小兔子,本月共有8對兔子。
所以兔子序列為 1 1 2 3 5 8....
即后一項是前面兩項之和,下面使用遞歸方法和類數組方法計算斐波那契數列,
#include <iostream>
using namespace std;
int f(int x){if(x==1||x==2)return 1;return f(x-1)+f(x-2);
}
int main(){
//使用遞歸方法輸出結果
cout<<f(46)<<endl;
//輸出前一項與后一項的比值,這個比值非常接近黃金分割數0.618
cout<<f(45)/f(46)<<endl;//使用類數組方法輸出結果,這個方法代碼量比遞歸法大,但是運行速度更快
int a=1,b=1,c;
for(int i=3;i<=46;i++){c=a+b;a=b;b=c;
}
cout<<c;return 0;
}