js函数记忆
实现一个常见的斐波那契函数:
var fibonacci = function(n){ return n<2 ? n : fibonacci(n-1) + fibonacci(n-2); };
然而,在我们实际计算时,做了很多无谓的工作,例如计算fibonacci(10)时,函数实际上被调用了177次!浪费了很多时间,如果我们能把之前计算得到的结果储存起来,便可以减少很多计算量。我们先声明一个memb数组用于储存数据,每次要计算时先查询数组里面是否有改值,如果有的话则直接调用,否则再计算。
var fibonacci = function(){ var memb = [0,1]; var fib = function(n){ var result = memb[n]; if(typeof memb[n] !== 'number'){ var result = fib(n-1) + fib(n-2); memb[n] = result; } return result; }; return fib; }();
经过这样处理后,计算fibonacci(10)时函数实际上只调用了19次。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步