算法学习记录01-求斐波拉契数列指定位置的值
求斐波拉(那)契数列下标为n的值
已知斐波那契额数列:
[1,1,2,3,5,8,13,21,34…]
规律:第一项和第二项固定为1,从第三项开始,都是前两个数之和
- 第一种方法 通过遍历存储数组中的值再通过下标返回要查找的值
function fib(n) {
const fibArr = [1, 1]
for (let i = 2; i < n + 1; i++) {
const item = fibArr[i - 1] + fibArr[i - 2]
fibArr.push(item)
}
return fibArr[n]
}
- 第二种方法 通过递归+动态规划(引入中间存储变量)
function fib(n, memo = {}) {
let result
if (memo[n]) return memo[n]
if (n=== 0 || n === 1) {
result = 1
} else {
result = fib(n - 1, memo) + fib(n - 2, memo)
}
memo[n] = result
return result
}
热爱我热爱的