青蛙跳台阶 很简单的解

问:有n层楼梯,青蛙可以跳1层, 2层...n层,那么到达第n层,总共有多少种跳法?

数学归纳法:

/**
 * n=1 1 --1种
 * n=2 11 2 --2种
 * n=3 111 12 21 3 --4种
 * n=4 1111 112 121 211 22 13 31 4 --8种
 * n=5 11111 1112 1121 1211 2111 122 221 212 113 131 311 32 23 14 41 5 --16种
 * 归纳:
 * f(n) = 2^(n-1)
 */

化简一下:f(n)=2^(n-1)

solution:

public static double climbStar(int n) {
    return Math.pow(2, n - 1);
}

问:有n层楼梯,青蛙一次只能跳1层或者跳2层,那么到达第n层,总共有多少种跳法?leetcode

数学归纳法:

 /**
     * n=1 1 --1种
     * n=2 11 2 --2种
     * n=3 111 12 21 --3种
     * n=4 1111 112 121 211 22 --5种
     * n=5 11111 1112 1121 1211 2111 122 221 212 --8种
     * 归纳:
     * f(n) = f(n-1) + f(n-2)
     */

这里可以看出是斐波那契数列

斐波那契数列的迭代写法:

private static int fibIterator(int n) {
    int fibm = 0;
    int fibn = 1;
    int j = 0;
    while (++j < n) {
        fibn += fibm;
        fibm = fibn - fibm;
    }
    return fibn;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值