一个楼梯有 n 级台阶,小A同学从下往上走,一步可以跨一级,也可以跨两级。
他走到第 n 级楼梯有多少种走法?
经过推算:
第一级:1
第二级:2
第三级:3 3=1+2
第四级:5 5=2+3
第五级:8 8=3+5
第六级:13
...
13就是5+8
规律:
第x级 = 第x-1级 + 第x-2级
当级数=1时,为1
当级数=2时,为2
定义存储数组f
那就初始f[1] = 1;f[2] = 2;
接下来for循环
从3至你要求的第n项
f[i] = f[i - 1] + f[i - 2];
最后输出你的目标结果n
代码Code(longlong版)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
int f[39];
signed main () {
cin >> n;
f[1] = 1; f[2] = 2;
for (int i = 3; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
cout << f[n];
return 0;
}
可以使用两个变量代替f数组,但计算过程中要用一个临时变量
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, x, y;
signed main () {
cin >> n;
x = 1, y = 2;
for (int i = 3; i <= n; i++) {
int t = y;
y = x + y;
x = t;
}
cout << y;
return 0;
}