C++實作Fibonacci數列
C++實作Fibonacci數列前20個數,這個數列有如下特點:第1,2兩個數都為1,1從第3個數開始,該數前面兩個數之和,即為:
F1=1(n=1)
F2=1(n=2)
F n F_n Fn?= F n ? 1 F_{n-1} Fn?1?+ F n ? 2 F_{n-2} Fn?2?(n≥3)
解題思路:
這個是一個很有趣的古典數學問題:有一對兔子,從出生后第三個月起每個月都生一對小兔子,小兔子長到第3個月后又生一對兔子,假設所有兔子都不死,問每個月的兔子總數為多少?
| 第幾個月 | 小兔子對數 | 中兔子對數 | 老兔子對數 | 兔子總數 |
|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 1 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 1 | 0 | 1 | 2 |
| 4 | 1 | 1 | 1 | 3 |
| 5 | 2 | 1 | 2 | 5 |
| 6 | 3 | 2 | 3 | 8 |
| 7 | 5 | 3 | 5 | 13 |
| … | … | … | … | … |
不滿1個月的為小兔子,滿1個月不滿2個月的為中兔子,滿3個月以上的為老兔子,可以看到每個月兔子的總數依次為1,1,2,3,5,8,13…這就是Fibonacci數列,
撰寫程式:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
long int f1=1, f2=1;
int i;
for ( i = 1; i <=20; i++)//每次輸出兩個數,故回圈40÷2=20次
{
cout << setw(12) << f1 << setw(12) << f2;//設備輸出的欄位寬帶為12
if (i % 2 == 0)cout << endl;
f1 = f1 + f2;//等號左邊的f1代表第3個數,是第1個第2個數之和
f2 = f1 + f2;//等號左邊的f2代表第4個數,是第2個第3個數之和
}
system("pause");
return 0;
}
運行結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252054.html
標籤:其他
