用C++写斐波那契数列
时间: 2024-10-23 11:14:53 浏览: 10
C++输出斐波那契数列的两种实现方法
5星 · 资源好评率100%
在C++中,斐波那契数列是一个经典的递归或循环计算问题。下面是一个简单的递归版本的实现:
```cpp
#include <iostream>
// 使用递归方式计算斐波那契数列
int fibonacci(int n) {
if (n <= 0) return 0;
else if (n == 1 || n == 2) return 1; // 基本情况:前两个数字
else return fibonacci(n - 1) + fibonacci(n - 2); // 递归调用
}
int main() {
int num_terms;
std::cout << "请输入要计算的斐波那契数列项数: ";
std::cin >> num_terms;
std::cout << "斐波那契数列的前 " << num_terms << " 项是:\n";
for (int i = 0; i < num_terms; ++i) {
std::cout << fibonacci(i) << " ";
}
return 0;
}
```
这是一个基本的递归实现,但对于大的`n`值,由于递归效率较低,可能会导致性能问题。为了避免这个问题,可以使用动态规划的技巧,将中间结果存储起来,如下面所示的迭代版本:
```cpp
#include <iostream>
#include <vector>
// 使用迭代方式计算斐波那契数列
std::vector<int> fibonacci_iterative(int n) {
std::vector<int> fib(n);
fib[0] = 0;
fib[1] = 1;
for (size_t i = 2; i < n; ++i) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib;
}
int main() {
int num_terms;
std::cout << "请输入要计算的斐波那契数列项数: ";
std::cin >> num_terms;
std::vector<int> result = fibonacci_iterative(num_terms);
std::cout << "斐波那契数列的前 " << num_terms << " 项是:\n";
for (const auto& num : result) {
std::cout << num << " ";
}
return 0;
}
```
这个迭代版本的时间复杂度为O(n),更适合处理较大的输入。
阅读全文