Sont des fonctions en JavaScript queue-appel de l'optimisation?

J'ai essayé de comprendre, de Tail call optimization dans le contexte de JavaScript et ont écrit ci-dessous récursive et la queue de récursive méthodes pour factorial().

Récursive:

function factorial (n) {
  if (n < 2) {
    return 1;
  } else {
    return n * factorial(n-1);
  }
}

Récursives terminales:

function factorial (n) {
  function fact(n, acc) {
    if (n < 2) {
      return acc;
    } else {
      return fact(n-1, n * acc);
    }
  }

  return fact(n, 1)
}

Mais je ne suis pas sûr si le tail-recursive version de la fonction sera optimisé par le compilateur JavaScript comme cela se fait dans d'autres langages comme Scala, etc. Quelqu'un peut-il m'aider à ce sujet?

  • La ligne 2 dans la Queue-récursive extrait doit être function fact(n, acc) pour travailler. Merci pour l'extrait, j'essayais de comprendre cela aujourd'hui!
InformationsquelleAutor Aditya Singh | 2016-05-14