[AcWing 821] 跳台阶

image


点击查看代码
#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;
}

  1. 递归算法

递归传入的值为 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;
}

  1. 递推算法

递推公式 f(n) = f(n - 1) + f(n - 2),从 f(0) 推到 f(n) 即可

posted @ 2022-04-15 13:08  wKingYu  阅读(65)  评论(0)    收藏  举报