斐波那契数列是一个在自然界中广泛出现的数列,其定义是:第一个和第二个数都是1,从第三个数开始,每一个数都是前两个数之和。斐波那契数列的前几项是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
以下是一个简单的C++程序,用于生成斐波那契数列的前n项:
#include <iostream>
#include <vector>
// 函数声明
std::vector<int> generateFibonacci(int n);
int main() {
int n;
std::cout << "请输入你想生成的斐波那契数列的项数: ";
std::cin >> n;
// 调用函数生成斐波那契数列
std::vector<int> fibonacci = generateFibonacci(n);
// 打印斐波那契数列
std::cout << "斐波那契数列的前 " << n << " 项是: ";
for (int i = 0; i < n; ++i) {
std::cout << fibonacci[i] << " ";
}
std::cout << std::endl;
return 0;
}
// 函数定义
std::vector<int> generateFibonacci(int n) {
std::vector<int> fibonacci(n);
if (n == 0) {
return fibonacci;
}
fibonacci[0] = 1; // 第一个数
if (n == 1) {
return fibonacci;
}
fibonacci[1] = 1; // 第二个数
for (int i = 2; i < n; ++i) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]; // 当前项等于前两项之和
}
return fibonacci;
}
这个程序首先提示用户输入想要生成的斐波那契数列的项数,然后调用generateFibonacci
函数生成相应的斐波那契数列,并打印出来。
generateFibonacci
函数接受一个整数n
作为参数,表示要生成的斐波那契数列的项数,并返回一个包含这些项的整数向量。这个函数首先创建一个大小为n
的向量fibonacci
,然后按照斐波那契数列的定义填充这个向量。如果n
为0,函数返回一个空的向量;如果n
为1,函数返回一个只包含第一个斐波那契数的向量。对于n
大于1的情况,函数首先设置前两个数为1,然后通过一个循环计算并填充剩余的项。
这个程序的时间复杂度是O(n),因为它需要计算n个斐波那契数。空间复杂度也是O(n),因为它需要存储n个斐波那契数。在实际应用中,如果n非常大,可能需要考虑使用更高效的算法,比如矩阵快速幂等,来减少计算时间。
此外,这个程序只生成了斐波那契数列的正整数部分。实际上,斐波那契数列也可以扩展到负数索引,其中F(-n) = (-1)^(n+1) * F(n),即负索引的斐波那契数是对应正索引斐波那契数的符号交替版本。如果需要处理这种情况,程序需要进行相应的修改。
标签:std,generateFibonacci,数列,C++,斐波,fibonacci,那契 From: https://blog.csdn.net/Dalao_zzl/article/details/137145141