典型动态规划
老三步
初始状态: f[1] = 1,f[0] = 0
转移方程: f[n+1] = f[n] + f[n-1]
f[n] = f[n-1] + f[n-2];
最优子结构: f[n]
注意一下题目要求的取模
public int fib(int n) {
/** 初始状态: f[1] = 1,f[0] = 0
* 转移方程: f[n+1] = f[n] + f[n-1]
* f[n] = f[n-1] + f[n-2];
* 最优子结构: f[n]
*/
int sum;//相当于fn
int a = 0;//相当于f0
int b = 1;//相当于f1 也相当于fn
if (n == 0) return 0;
if (n == 1) return 1;
for (int i = 2; i <= n; i++){
sum = (a + b) % 1000000007;
a = b;
b = sum;
}
return b;
}