我一直试图Tail call optimization在 JavaScript 的上下文中理解,并为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 编译器优化。有人可以帮我解决这个问题吗?