算法学习记录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

}
posted @ 2020-11-19 15:23  ✔️zhangfl_go  阅读(163)  评论(0编辑  收藏  举报