APP正在开发中...
收藏
本篇文章介绍JS尾递归的实现方法及代码优化技巧。 在学习数据结构和算法的时候,我们都知道所有的递归都是可以优化成栈+循环的。 对于特定的递归函数,一般我们都是手动对它们进行优化的。 在学习scala的时候,接触到尾递归的概念。我们只要将递归写成尾递归
function tco(f) { var value; var active = false; var accumulated = []; return function accumulator() { accumulated.push(arguments); if(!active) { active = true; while(accumulated.length) { value = f.apply(this, accumulated.shift()); } active = false; return value; } }; } var sum = tco(function(x, y) { if(y > 0) { return sum(x + 1, y - 1); } else { return x; } }); let res = sum(1, 5) console.info(res);
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30