写一下自己的思路:
0 . 这道题还是有一定难度的,这里使用滚动数组
的思想;
1 . 下面用 $pp$ 表示代码中的 $prepre$,用 $p$ 表示代码中的 $pre$;
2 . 在进入 $for$ 循环之前,$pp$ 的值是 $0$,$p$ 的值是 $1$,如下所示;
0 1 1 2 3 5
↑ ↑
pp p
3 . 进入 $for$ 循环以后,先输出 $pp$ 的值,即 $0$,然后再执行后面的三条语句,则变成下图:
0 1 1 2 3 5
↑ ↑ ↑
pp p sum
0 1 1 2 3 5
↑ ↑
pp p
4 . 然后再输出 $pp$ 的值;
5 . 以此类推,这样每次输出的结果就构成了前 $n$ 项斐波那契数列。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int prepre = 0;
int pre = 1;
for (int i = 0; i < n; ++i) {
cout << prepre << " ";
int sum = prepre + pre;
prepre = pre;
pre = sum;
}
return 0;
}