C++實(shí)現(xiàn)斐波那契數(shù)列的一種常見方法是使用遞歸。斐波那契數(shù)列的定義是前兩個(gè)數(shù)字是1,之后的每個(gè)數(shù)字是前兩個(gè)數(shù)字的和。
以下是一個(gè)用遞歸實(shí)現(xiàn)斐波那契數(shù)列的示例代碼:
#include <iostream>
int fibonacci(int n) {
// 基本情況:當(dāng)n為0或1時(shí),直接返回1
if (n <= 1) {
return 1;
}
// 遞歸調(diào)用:返回前兩個(gè)斐波那契數(shù)的和
return fibonacci(n-1) + fibonacci(n-2);
}
int main() {
int n = 10; // 要計(jì)算的斐波那契數(shù)列的長度
// 輸出斐波那契數(shù)列的前n個(gè)數(shù)字
for (int i = 0; i < n; i++) {
std::cout << fibonacci(i) << " ";
}
return 0;
}
此代碼將輸出斐波那契數(shù)列的前10個(gè)數(shù)字:1 1 2 3 5 8 13 21 34 55。
然而,遞歸實(shí)現(xiàn)的斐波那契數(shù)列在計(jì)算較大的數(shù)時(shí)會(huì)非常慢,因?yàn)樗鼤?huì)重復(fù)計(jì)算許多相同的數(shù)字。為了改進(jìn)性能,可以使用迭代方法或記憶化方法實(shí)現(xiàn)斐波那契數(shù)列。