使用动态规划
老三步
初始状态: 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;
}

本文解析了如何使用动态规划方法求解斐波那契数列问题,介绍了从初始状态f1=1, f2=2出发,通过转移方程fn+1=fn+fn-1和fn=fn-1+fn-2实现数列计算,并优化求解过程。关键在于理解最优子结构并利用循环降低重复计算。

被折叠的 条评论
为什么被折叠?



