为了账号安全,请及时绑定邮箱和手机立即绑定

javascript中手动实现“尾递归优化”,这段代码的运行逻辑是什么?

javascript中手动实现“尾递归优化”,这段代码的运行逻辑是什么?

温温酱 2018-11-22 18:14:04
资料地址:尾递归优化的实现研究学习阮一峰老师的ES6教程,里面讲到了“尾递归优化”,看不懂这块的代码逻辑,代码如下: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运行了下这段代码,虽然反映比较慢,但是确实没有卡死,虽然阮一峰老师对这段代码进行了讲解,但是我还是没有调试明白。请求大神能具体讲下这段代码的运行逻辑和优化思路,多谢了。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 422 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信