最佳答案
我一直试图在 JavaScript 的上下文中理解 Tail call optimization
,并为 factorial()
编写了以下递归和尾递归方法。
递归:
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
尾递归:
function factorial (n) {
function fact(n, acc) {
if (n < 2) {
return acc;
} else {
return fact(n-1, n * acc);
}
}
return fact(n, 1)
}
但是我不确定这个函数的 tail-recursive
版本是否会像其他语言(如 Scala 等)那样被 JavaScript 编译器优化。有人能帮帮我吗?