使用vector 计算斐波那契数列
时间: 2024-04-28 10:15:27 浏览: 15
使用vector计算斐波那契数列的方法如下:
```cpp
#include <iostream>
#include <vector>
int fibonacci(int 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;
int result = fibonacci(n);
std::cout << "The " << n << "th Fibonacci number is: " << result << std::endl;
return 0;
}
```
这段代码使用了一个vector来存储计算过程中的斐波那契数列,通过循环计算每个数的值,并将结果存储在vector中。最后返回第n个斐波那契数。
相关问题
斐波那契数列 高精度
斐波那契数列是一个数列,其中每个数字都是前两个数字的和。通常,斐波那契数列的前两个数字是0和1。
如果要计算斐波那契数列中的第n个数字(n从0开始),可以使用高精度算法来处理,以避免溢出或精度丢失。以下是一个使用高精度算法计算斐波那契数列的示例代码:
```cpp
#include <iostream>
#include <vector>
// 高精度加法
std::vector<int> add(const std::vector<int>& num1, const std::vector<int>& num2) {
std::vector<int> result;
int carry = 0;
int i = num1.size() - 1;
int j = num2.size() - 1;
while (i >= 0 || j >= 0 || carry > 0) {
int sum = carry;
if (i >= 0) {
sum += num1[i];
i--;
}
if (j >= 0) {
sum += num2[j];
j--;
}
result.insert(result.begin(), sum % 10);
carry = sum / 10;
}
return result;
}
// 计算斐波那契数列的第n个数字(高精度)
std::vector<int> fibonacci(int n) {
std::vector<int> fibPrev{0};
std::vector<int> fibCurr{1};
for (int i = 2; i <= n; i++) {
std::vector<int> fibNext = add(fibPrev, fibCurr);
fibPrev = fibCurr;
fibCurr = fibNext;
}
return fibCurr;
}
int main() {
int n = 100; // 计算斐波那契数列的第100个数字
std::vector<int> result = fibonacci(n);
std::cout << "Fibonacci number at position " << n << ": ";
for (int digit : result) {
std::cout << digit;
}
std::cout << std::endl;
return 0;
}
```
在上述示例中,我们定义了一个 `add` 函数来实现高精度的加法。然后,我们使用 `fibonacci` 函数来计算斐波那契数列的第n个数字。通过使用高精度的加法来计算每个数字,我们可以避免溢出或精度丢失。
请注意,随着n的增加,计算斐波那契数列的高精度解决方案会变得更加耗时和占用内存。因此,在实际应用中,需要根据具体需求权衡使用高精度算法的必要性和性能要求。
广义斐波那契数列c++代码
广义斐波那契数列是指除了前个数以外,后面的每个都是前面k个数的和,其中k大于等于2。下面是一个用C++实现广义斐波契数列的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<int> generalizedFibonacci(int n, int k) {
vector<int> fib;
fib.push_back(0);
fib.push_back(1);
for (int i = 2; i < n; i++) {
int sum = 0;
for (int j = i - 1; j >= i - k; j--) {
sum += fib[j];
}
fib.push_back(sum);
}
return fib;
}
int main() {
int n, k;
cout << "Enter the value of n: ";
cin >> n;
cout << "Enter the value of k: ";
cin >> k;
vector<int> fib = generalizedFibonacci(n, k);
cout << "The generalized Fibonacci sequence is: ";
for (int i = 0; i < fib.size(); i++) {
cout << fib[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码中,`generalizedFibonacci`函数接受两个参数n和k,分别表示要生成的广义斐波那契数列的长度和前面k个数的和。函数内部使用一个vector来保存生成的数列,首先将0和1添加到数列中,然后从第三个数开始,每个数都是前面k个数的和。最后,将生成的数列返回。
在主函数中,用户需要输入n和k的值,然后调用`generalizedFibonacci`函数生成广义斐波那契数列,并输出结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)