题目描述
有一楼梯共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];
}
}