// 使用迴圈計算第 n 個費氏數列的值(C++ 版本)
#include <iostream>
#include <vector>
using namespace std;
int fibonacci_iterative(int n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
}
int a = 0, b = 1;
for (int i = 2; i <= n; ++i) {
int temp = b;
b = a + b;
a = temp;
}
return b;
}
// 使用備忘錄遞迴計算第 n 個費氏數列的值(C++ 版本)
int fibonacci_recursive_helper(int n, vector<int>& memo) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
}
if (memo[n] != -1) {
return memo[n];
}
memo[n] = fibonacci_recursive_helper(n - 1, memo) + fibonacci_recursive_helper(n - 2, memo);
return memo[n];
}
int fibonacci_recursive(int n) {
vector<int> memo(n + 1, -1);
return fibonacci_recursive_helper(n, memo);
}
int main() {
int n = 10;
cout << "Fibonacci Iterative (n=" << n << "): " << fibonacci_iterative(n) << endl;
cout << "Fibonacci Recursive (with memoization) (n=" << n << "): " << fibonacci_recursive(n) << endl;
return 0;
}