[AcWing 821] 跳台阶

点击查看代码
#include<iostream>
using namespace std;
int n, ans = 0;
void f(int k)
{
if (k == n) ans ++;
else if (k < n) {
f(k + 1);
f(k + 2);
}
}
int main()
{
cin >> n;
f(0);
cout << ans;
return 0;
}
- 递归算法
递归传入的值为 0,表示一开始在第 0 级台阶,当 k < n 时,递归地调用 f(k + 1) 和 f(k + 2),当 k == n 时表示到达第 n 级台阶,就把 ans ++
点击查看代码
#include<iostream>
using namespace std;
const int N = 20;
int n, f[N];
int main()
{
cin >> n;
f[0] = 1;
f[1] = 1;
for (int i = 2; i <= n; i++) {
f[i] = f[i - 1] + f[i - 2];
}
cout << f[n];
return 0;
}
- 递推算法
递推公式 f(n) = f(n - 1) + f(n - 2),从 f(0) 推到 f(n) 即可

浙公网安备 33010602011771号