J'ai essayé de comprendre Tail call optimization
dans le contexte de JavaScript et j'ai écrit les méthodes récursives et récursives-queues ci-dessous pour factorial()
.
Récursif :
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
Queue-récursive :
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 que le tail-recursive
de la fonction sera optimisée par le compilateur JavaScript, comme c'est le cas dans d'autres langages tels que Scala, etc. Quelqu'un peut-il m'aider sur ce point ?