函数记忆

2021-02-05  本文已影响0人  kevin5979
什么是函数记忆?
函数记忆的实现
function factorial(n) {  // 定义一个递归阶乘函数
  if (n == 0 || n == 1) {
    return 1
  } else {
    return n * factorial(n - 1)
  }
}

// 记忆函数
function memorize(fn) {
  let cache = {}
  return function () {
  let key = JSON.stringify(arguments);
  if (cache[key]) {
    return cache[key]
  } else {
    cache[key] = fn.apply(this, arguments)
    return cache[key]
    }
  }
}
let newFn = memorize(factorial)
  console.time("1")
  console.log(factorial(25))
 console.timeEnd("1")

  console.time("2")
  console.log(newFn(25))
  console.timeEnd("2")

  console.time("3")
  console.log(newFn(25))
  console.timeEnd("3")

  console.time("4")
  console.log(newFn(25))
  console.timeEnd("4")
image.png
注意:
END
上一篇下一篇

猜你喜欢

热点阅读