Javascript 高性能之递归,迭代,查表法详解及实例(2)

/* 递归优化通用版,性能不如普通版,需要缓存每次调用结果, 即内部函数 */ function memoize(func, cache) { // 缓存池 cache = cache || {}; // 没有则新建 var result = function(arg) { // console.log("memoize count = " + count++); if (!cache.hasOwnProperty(arg)) { cache[arg] = func(arg); } }; return result; } // 使用 // 将阶乘函数缓存起来 // 只是优化了cache的通用性,但损失了一部分性能 var memOpfactorial = memoize(factorial, {"0": 1, "1": 1}); var f1 = memOpfactorial(6); var f2 = memOpfactorial(5); var f3 = memOpfactorial(4); // 结果次数依旧是:18次。因此不推荐使用

总结

谨慎使用递归,以防造成死循环,程序崩溃,或者调用栈溢出;

学会使用迭代来替代递归,可以避免递归调用栈或死循环问题出现;

查表法,递归的优化版:Memoization减少重复工作,提升性能。但不推荐使用通用版,相比普通版会损失部分性能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjyfw.html