斐波那契数列c++递归优化
时间: 2024-11-30 18:03:26 浏览: 73
斐波那契数列是一种经典的数列,每个数字是前两个数字之和。在C++中,递归实现斐波那契数列直观易懂,但是效率较低,因为会有大量的重复计算。为了优化递归版本,可以使用动态规划的思想,通过引入一个数组`f`来存储已经计算过的斐波那契值,避免重复。
以下是使用C++优化后的斐波那契数列递归实现:
```cpp
#include <vector>
size_t fibonacci(size_t n) {
std::vector<int> f(n + 1, 0);
if (n <= 1)
return n;
else {
f[0] = 0; // 第0项
f[1] = 1; // 第1项
for (size_t i = 2; i <= n; ++i)
f[i] = f[i - 1] + f[i - 2]; // 记录并返回已计算的值
return f[n];
}
}
```
在这个优化版中,我们首先初始化一个大小为`n+1`的数组,并设置基本情况(n小于等于1)。然后从第三个位置开始遍历,每次计算都利用之前保存的结果,减少了重复计算。
相关问题
斐波那契数列c++递归
斐波那契数列是一种经典的数学序列,其中每个数字都是前两个数字之和。在C++中,我们可以使用递归来实现斐波那契数列。下面是一个简单的递归函数的例子:
```cpp
#include<iostream>
int fibonacci(int n) {
// 递归的基本情况:当n小于等于0时,返回0;当n为1时,返回1
if (n <= 1)
return n;
else
// 当n大于1时,返回前两个数的和
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int num;
std::cout << "请输入一个正整数: ";
std::cin >> num;
std::cout << "斐波那契数列的第" << num << "项是: " << fibonacci(num) << std::endl;
return 0;
}
```
在这个代码中,`fibonacci`函数会一直递归调用自身,直到达到基本情况,然后逐级返回结果。然而,需要注意的是,对于较大的数值,这种递归方法效率较低,因为会有大量的重复计算。
斐波那契数列c++递归
斐波那契数列是一个经典的数学序列,其中每个数字是前两个数字之和。通常递归算法可以简洁地表示这个规律。在 C++ 中,你可以使用如下的递归函数来计算第 n 项斐波那契数:
```cpp
#include <iostream>
// 递归函数计算斐波那契数列
int fibonacci(int n) {
if (n <= 0) {
return 0; // 基本情况:第一项是0,第二项是1
} else if (n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2); // 递归调用自身计算前两项的和
}
}
int main() {
int n;
std::cout << "请输入想要计算的斐波那契数列项数: ";
std::cin >> n;
std::cout << "斐波那契数列的第 " << n << " 项是: " << fibonacci(n) << std::endl;
return 0;
}
```
阅读全文
相关推荐
















