javascript 尾递归优化TCO

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 尾递归优化TCO相关的知识,希望对你有一定的参考价值。

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
  }
});

sum(1, 100000)
// 100001

以上是关于javascript 尾递归优化TCO的主要内容,如果未能解决你的问题,请参考以下文章

详解JavaScript调用栈尾递归和手动优化

学习Javascript之尾调用

尾递归优化

关于ES6尾调用优化

关于ES6尾调用优化

如何看待以及理解Python的这种尾递归优化