京东 上台阶

题目描述

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
测试样例:
3
返回:2

/** * 第n阶,有两种跳法,从n-1跳上来,或者从n-2跳上来 * f(n)=f(n-1)+f(n-2) * f(1) = 0; * f(2) = 1; * f(3) = 2; */
public class GoUpstairs {

    static int[] fibo = new int[101];

    static {
        fibonacci();
    }

    public static void fibonacci() {
        fibo[1] = 0;
        fibo[2] = 1;
        fibo[3] = 2;
        for (int i = 4; i <= 100; i++) {
            fibo[i] = (fibo[i - 1] + fibo[i - 2]) % 1000000007;
        }
    }

    public int countWays(int n) {
        if (n < 2) {
            return 0;
        }
        return fibo[n];
    }

}

你可能感兴趣的:(京东)