C++编写斐波那契数列指的是以下数列: 1,1,2,3,5,8,...,从第三个数开始,每个数是前两个数的和。 现在蜗蜗写出了这个数列的前 n 个数,请你帮他算一算,这 n 个数中有多少是奇数。
时间: 2024-02-12 18:06:35 浏览: 63
好的,这是一个可以计算斐波那契数列中奇数个数的C++程序:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int f1 = 1, f2 = 1, cnt = 0;
if (n >= 1) {
cout << "1 ";
cnt++;
}
if (n >= 2) {
cout << "1 ";
cnt++;
}
for (int i = 3; i <= n; i++) {
int f = f1 + f2;
f1 = f2;
f2 = f;
if (f % 2 == 1) {
cout << f << " ";
cnt++;
}
}
cout << endl << cnt << endl;
return 0;
}
```
这个程序首先读入一个整数 `n`,表示要计算前n个斐波那契数列的奇数个数。我们使用两个变量 `f1` 和 `f2` 分别记录前两个斐波那契数列的值,然后从第3个数开始,每次计算当前数等于前两个数之和,然后更新 `f1` 和 `f2` 的值。如果当前数是奇数,我们输出这个数,并且将奇数个数 `cnt` 加1。最后输出奇数个数 `cnt` 的值。
这个程序的时间复杂度为 $O(n)$,可以计算前n个斐波那契数列中奇数的个数。
阅读全文