Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
题目描述
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
示例 1:
输入: n = 2
输出: 1
解释: F(2) = F(1) + F(0) = 1 + 0 = 1
示例 2:
输入: n = 3
输出: 2
解释: F(3) = F(2) + F(1) = 1 + 1 = 2
示例 3:
输入: n = 4
输出: 3
解释: F(4) = F(3) + F(2) = 2 + 1 = 3
提示:
0 <= n <= 30
题解
动态规划 也称dp 它有几个关键的步骤:
-
递推公式
循环遍历时找到要进行计算的公式
-
进行初始化数组
因为必须先确定公式,才能确定我们初始化的数组数据长什么样
-
遍历顺序
是从数组的开头开始遍历,还是从尾部开始遍历
斐波那契数列,作为动态规划入门级的题目,可以很清楚的看到我们上面所需的3个步骤
这里把相关步骤放到代码中,来清晰的查看。
动态规划
const fib = (n) => {
// 初始化数组
const dp = [0, 1]
// 遍历顺序 从头到尾
for (let i = 2; i <= n; i++) {
// 递推公式
dp[i] = dp[i - 1] + dp[i - 2]
}
return dp[n]
}
总结
该题目 23 :作为入门动态规划是很经典的题,可以很大程度的帮我们去理解。