我一直在尝试在JavaScript上下文中理解Tail call optimization
,并为factorial()
编写了下面的递归和尾递归方法。
递归:
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
Tail-recursive:
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编译器优化。有人能帮我解决这个问题吗?
https://stackoverflow.com/questions/37224520
复制相似问题