Ich habe versucht zu verstehen Tail call optimization
im Kontext von JavaScript und habe die folgenden rekursiven und schwanzrekursiven Methoden für geschrieben factorial()
.
Rekursiv:
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
Schwanzrekursiv:
function factorial (n) {
function fact(n, acc) {
if (n < 2) {
return acc;
} else {
return fact(n-1, n * acc);
}
}
return fact(n, 1)
}
Ich bin mir jedoch nicht sicher, ob die tail-recursive
Version der Funktion vom JavaScript-Compiler optimiert wird, da sie in anderen Sprachen wie Scala usw. ausgeführt wird. Kann mir jemand dabei helfen?