使用动态规划
老三步
初始状态: f1 = 1,f2 = 2
转移方程: fn+1 = fn + fn-1
fn = fn-1 + fn-2
最优子结构: fn
public int numWays(int n) {
/** 初始状态: f1 = 1,f2 = 2
* 转移方程: fn+1 = fn + fn-1
* fn = fn-1 + fn-2
* 最优子结构: fn
**/
int result;
int f1 = 1;
int f2 = 2;
if (n == 0) return 1;
if (n == 1) return f1;
if (n == 2) return f2;
for (int i = 3; i <= n; i++){
result = (f1 + f2) % 1000000007;
f1 = f2;
f2 = result;
}
return f2;
}