首页 > 其他分享 >练习7:函数记忆相关

练习7:函数记忆相关

时间:2022-08-19 15:56:07浏览次数:57  
标签:count 练习 函数 cache 记忆 fibonacci key var memoize

何为函数记忆

函数记忆是指将上次的计算结果缓存起来,当下次调用时,如果遇到相同的参数,就直接返回缓存中的数据。
常用于,复杂且有重复的计算。
例如:斐波那契数列的计算

underscore中的实现

function memoize(func, hasher) {
    var memoize = function(params1) {
        var cache = memoize.cache
        var key = '' + (!hasher ? params1 : hasher.apply(this, arguments))
        if (!cache[key]) {
            cache[key] = func.apply(this, arguments)
        }
        return cache[key]
    }
    memoize.cache = {}
    return memoize
}

优化斐波那切的计算

// 斐波那契实验
var count = 0
var fibonacci = function(n) {
  count ++
  return n < 2 ? 1 : fibonacci(n-1) + fibonacci(n-2)
}
// fib(10)
// console.log(count)  // 177

var fibonacci = memoize(fibonacci)
fibonacci(10)
console.log(count)  // 11

标签:count,练习,函数,cache,记忆,fibonacci,key,var,memoize
From: https://www.cnblogs.com/xuweikang/p/16602250.html

相关文章

  • 练习8:最大公约数和最小公倍数问题
    最大公约数的计算,用到辗转相除法例如:求gcd(24,10),可以转换为gcd(10,4),然后是gcd(4,2),然后是(2,0),最好得出结果是2方法1:functiongcd(a,b){vartempif......
  • @FunctionalInterface 函数式接口
    作用:在编译过程中,校验该接口只有一个抽象方法;解释:除了唯一的抽象方法外,可以包含已经有实现的方法(包括静态方法);使用:可以使用Lambda表达式来表示该接口的一个实现:@Functi......
  • Python中,函数的返回值
    deffun(num):odd=[]#存奇数even=[]#存偶数foriinnum:ifi%2:odd.append(i)else:even.append(i)re......
  • python-zip()函数-zip*函数-压缩-解压缩
    python-zip()函数-压缩-解压缩zip()函数:将多个序列(列表、元组、字典、集合、字符串以及range()构成的列表)按一定规则重新组成一组元组。常与list()函数搭配使用,list......
  • python菜鸟学习: 10. 函数的基本用法
    #-*-coding:utf-8-*-#回参函数deftest01():return0#以元组返回参数deftest02():return1,[1,2,3,4,5],{"name":"liyuzhoupan"}#有参函数deftest......
  • 面试 写函数 有什么好的习惯
    1·以JSDoc的形式,去写函数注释2· 写代码 一直遵循DRY  原则 ( DRY  ——>  Don't RepectYouself)但凡我写的代码,重......
  • 渲染头像和名字的函数(jQuery)
    functionrenderAvatar(user){varname=user.nickname||user.username;//利用或以及字符串的先后顺序当nickname为空时则选择username,当他不为空......
  • 惩罚函数法
    基本思想:通过构造惩罚函数将约束问题转化为无约束问题,进而用无约束最优化方法求解。主要分为内点法和外点法。注意:罚函数法对目标函数的凹凸性没有要求,且结合启发式算法(......
  • 第四章 2 数据类型-字符串 练习题
    第四章2数据类型-字符串练习题基础知识1\python语句"".join(list('hellowordld!'))的执行结果是:helloworld!#join()函数,是字符串内置的一个函数,在classstr下面a......
  • 10个常用的损失函数解释以及Python代码实现
    什么是损失函数?损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越......