题目
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
思考
- 1、这道是动态规划的入门题目
- 2、简单的递推方程都给我们了
代码和注释
/**
标准的动态规划
1、dp下标的含义
2、确定递推公式
3、dp数组的初始化
4、确定遍历顺序(从前到后,从后到前)
5、log dp
*/
class Solution {
public int fib(int n) {
// 边界
if(n <= 1){
return n;
}
// 1、dp[i] 代表的是第n个数据
int[] dp = new int[n + 1];
// 2、确定递推公式(dp[n] = dp[n- 1] + dp[n-2])
// 3、初始化dp数组
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i <= n; i++){
dp[i] = dp[i - 1] + dp[i -2];
}
return dp[n-1];
}
}
总结
- 动态规划五部曲
- 1、确定递推数组下标的意义
- 2、确定动态方程
- 3、初始状态
- 4、遍历顺序(前=》后/后=》前)
- 5、可尝试打印判断数组和我们想的是不是一样