在C++中如何高效实现斐波那契数列的递推算法,并对比不同实现方式的时间复杂度?
时间: 2024-12-01 10:22:03 浏览: 4
斐波那契数列是递推算法的经典应用场景之一,C++提供多种方法实现递推,每种方法的时间复杂度各有不同。例如,简单的递归实现,虽然直观但效率低下,时间复杂度为指数级O(2^n),因为它包含大量的重复计算。为了避免重复计算,可以采用带记忆化的递归,即在递归过程中存储已经计算过的结果,这样可以将时间复杂度降低到O(n)。更进一步,可以使用动态规划的方法,通过迭代的方式从下往上计算斐波那契数列,这种方法同样具有O(n)的时间复杂度,并且不需要递归带来的额外空间消耗。
参考资源链接:[递推算法详解:从斐波那契数列到递推策略](https://wenku.csdn.net/doc/5ucj89n08z?spm=1055.2569.3001.10343)
下面给出一个使用动态规划的C++示例代码:
```cpp
#include <iostream>
#include <vector>
int fibonacci(int n) {
if (n <= 1) return n;
std::vector<int> fib(n + 1);
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i <= n; ++i) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
}
int main() {
int n = 10; // 示例计算斐波那契数列的第10项
std::cout <<
参考资源链接:[递推算法详解:从斐波那契数列到递推策略](https://wenku.csdn.net/doc/5ucj89n08z?spm=1055.2569.3001.10343)
阅读全文