首页 留言 登录
递推-爬楼梯

问题:

假设你正在爬楼梯,楼梯有n阶

每一次,你可以爬1阶,或者2阶,

有多少种方法,爬到楼顶!

分析:

求方法数这个函数设为f(n)

当n=1时,也就是只有一阶时,

f(1)= 1;

当n=2,也就是楼梯有两阶时,

f(2)= 2;

第一种:1阶+1阶

第二种:2阶 直接到顶。

当n=3时,就有两种情况:

第一种情况,

第一步,爬1阶,剩下还有2阶

那这种情况下,方法数,就是爬2阶的方法数,也就是f(2)

第二种情况,

第一步,直接爬2阶,剩下还有1阶

这种情况下,方法数,就是f(1)

把这两种情况合计起来:

f(3) = f(2) + f(1);

同样道理,当n=4是,也是有两种情况

1.第一步爬1阶,方法数是f(3)

2.第一步爬2阶,方法数是f(2)

所以f(4) = f(3) + f(2)

所以我们可以总结出递推公示,当n>=3时,f(n) = f(n-1) + f(n-2)

演示代码如下:

#include <bits/stdc++.h> 
using namespace std;
int f[30];
int main(){
    f[1]=1;
    f[2]=2;
    int n;
    cin >> n;//n>=3
    for(int i=3;i<=n;++i){
        f[i] = f[i-2] + f[i-1];
    }
    cout << f[n];

    return 0;
}
上一篇:递推-杨辉三角
下一篇:递推-斐波那契数列
验证码
评论留言 (0条)