用动态数组表达斐波那契数列
时间: 2023-11-20 13:50:16 浏览: 97
可以使用动态数组来表达斐波那契数列,代码如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> fibonacci(int n) {
vector<int> res(n);
res[0] = 0;
if (n == 1) {
return res;
}
res[1] = 1;
for (int i = 2; i < n; i++) {
res[i] = res[i-1] + res[i-2];
}
return res;
}
int main() {
int n = 10;
vector<int> res = fibonacci(n);
for (int i = 0; i < n; i++) {
cout << res[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:0 1 1 2 3 5 8 13 21 34
相关问题
用到数组用C语言表达出斐波那契数列,且输出该数列前20行的代码,且5个为一行:
下面是用C语言表达斐波那契数列并输出前20行的代码,每行输出5个数:
```c
#include <stdio.h>
int main() {
int fib[20];
fib[0] = 0;
fib[1] = 1;
printf("%d %d ", fib[0], fib[1]);
for (int i = 2; i < 20; i++) {
fib[i] = fib[i-1] + fib[i-2];
printf("%d ", fib[i]);
if ((i+1) % 5 == 0) {
printf("\n");
}
}
return 0;
}
```
用递归的方法计算第一百个斐波那契数列,C++实现
递归是一种在解决问题时调用自身的方法,它可以很直观地表达斐波那契数列的定义,但是直接使用递归计算斐波那契数列的第100项会遇到效率问题,因为会有大量的重复计算。为了提高效率,可以使用“记忆化”递归(也称为带缓存的递归),或者使用非递归的方法,如循环或矩阵快速幂等。下面是使用记忆化递归的一个C++实现示例:
```cpp
#include <iostream>
#include <vector>
std::vector<long long> fib_cache(101, -1); // 创建一个缓存数组,初始化为-1
long long fibonacci(int n) {
if (n <= 1) {
return n;
}
// 如果缓存中有值,则直接返回
if (fib_cache[n] != -1) {
return fib_cache[n];
}
// 否则,递归计算并存储结果到缓存中
fib_cache[n] = fibonacci(n - 1) + fibonacci(n - 2);
return fib_cache[n];
}
int main() {
std::cout << "斐波那契数列的第100项是: " << fibonacci(100) << std::endl;
return 0;
}
```
在上面的代码中,`fib_cache` 数组用于存储已经计算过的斐波那契数,以避免重复计算。当计算到某一项时,如果该值已经被计算过,直接从缓存中获取结果。这种方法将时间复杂度从指数级降低到线性级别。
阅读全文