【发布时间】:2015-04-15 14:10:26
【问题描述】:
我写了一个函数来递归地求和值,但它不符合 ES6 中尾调用优化的标准(原因我无法表达)。
function sum(...values) {
if(!values.length) {
return 0;
}
return values.shift() + sum(...values);
}
如何将其更改为符合优化条件?
【问题讨论】:
-
执行此操作的一般方法是传递某种类型的累加器参数。就我个人而言,我只会声明一个带有额外参数的本地函数;我会举个例子,但我还不擅长 ES6 语法:)
-
哈哈,我输入的函数几乎与 Bergi 的答案一模一样,但我认为它可能是错误的。
-
我认为这不应该被关闭。它在局部类似于链接的问题,但这是关于 JavaScript 的,是一个很好的例子。
标签: javascript recursion ecmascript-6 tail-call-optimization