JavaScript经典面试题:记忆化斐波那契函数(Memoization)

2018-02-0304:58:47WEB前端开发Comments3,163 views字数 419阅读模式

记忆化斐波那契函数(Memoization)

题目:斐波那契数列指的是类似于以下的数列:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

1, 1, 2, 3, 5, 8, 13, ....文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

也就是,第 n 个数由数列的前两个相加而来:f(n) = f(n - 1) + f(n -2)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

请你完成 fibonacci 函数,接受 n 作为参数,可以获取数列中第 n 个数,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

fibonacci(1) // => 1
fibonacci(2) // => 1
fibonacci(3) // => 2

...文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

测试程序会从按顺序依次获取斐波那契数列中的数,请注意程序不要超时,也不要添加额外的全局变量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

本题来源:《JavaScript 语言精髓》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

答案:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html

const fibonacci = ((memo = [0, 1]) => {
  const fib = (n) => {
    let result = memo[n]
    if (typeof result !== "number") {
      result = fib(n - 1) + fib(n - 2)
      memo[n] = result
    }
    return result
  }
  return fib
})()
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/426.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/426.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定