[算法]上台阶

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

这是个斐波拉数列,n为
1 2 3 4 5 …
0 1 2 3 5 …

package 上台阶;

public class Solution {

    public int countWays(int n) {
        int[] a = new int[101];
        a[1] = 0;
        a[2] = 1;
        a[3] = 2;
        for(int i=4; i<=n; i++)
        {
            a[i] = a[i-1] + a[i-2];
            if(a[i] > 1000000007)
            {
                a[i] = a[i] % 1000000007;
            }
        }
        return a[n];
    }
}

你可能感兴趣的:(算法)