個人網(wǎng)站公安備案流程seo技巧是什么
1. 斐波那契數(shù)列簡介
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學家萊昂納多?斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為 “兔子數(shù)列”。
它的特點是從第三項開始,每一項都等于前兩項之和,數(shù)列的前兩項通常定義為 0 和 1(也有從 1 和 1 開始的定義方式,這里以 0 和 1 為例),即:
該數(shù)列的前幾項依次為:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144……
斐波那契數(shù)列在自然界、計算機科學、數(shù)學等諸多領域都有廣泛的應用,比如某生長模式、某算法優(yōu)化等。
以下是不同方式輸出斐波那契數(shù)列前20項的值
2. 實例代碼之遞歸實現(xiàn)
需要注意的是,遞歸實現(xiàn)方式在計算較大項數(shù)時效率會很低,因為存在大量重復計算。
#include <iostream>// 遞歸函數(shù)計算斐波那契數(shù)列
int fibonacciRecursive(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;} else {return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);}
}int main() {std::cout << "斐波那契數(shù)列(遞歸實現(xiàn))前20項的值為:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciRecursive(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}
3. 實例代碼之for循環(huán)實現(xiàn)
該實現(xiàn)方式相對遞歸實現(xiàn)效率更高,尤其在計算較大項數(shù)時優(yōu)勢明顯。
#include <iostream>// 迭代函數(shù)計算斐波那契數(shù)列
int fibonacciIterative(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;}int a = 0, b = 1, c;for (int i = 2; i <= n; ++i) {c = a + b;a = b;b = c;}return b;
}int main() {std::cout << "斐波那契數(shù)列(迭代實現(xiàn))前20項的值為:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciIterative(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}
4. 實例代碼之數(shù)組實現(xiàn)
這種實現(xiàn)方式在需要多次訪問數(shù)列不同項時可能會更方便,因為已經(jīng)計算過的項都存儲在數(shù)組中了。
#include <iostream>// 使用數(shù)組計算斐波那契數(shù)列
int fibonacciArray(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;}int fibArray[n + 1];fibArray[0] = 0;fibArray[1] = 1;for (int i = 2; i <= n; ++i) {fibArray[i] = fibArray[i - 1] + fibArray[i - 2];}return fibArray[n];
}int main() {std::cout << "斐波那契數(shù)列(數(shù)組存儲實現(xiàn))前20項的值為:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciArray(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}