Ho cercato di capire Tail call optimization
nel contesto di JavaScript e ho scritto i seguenti metodi ricorsivi e coda-ricorsivi per factorial()
.Le funzioni in coda JavaScript sono ottimizzate?
ricorsivo:
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
Coda-recursive:
function factorial (n) {
function fact(n, acc) {
if (n < 2) {
return acc;
} else {
return fact(n-1, n * acc);
}
}
return fact(n, 1)
}
Ma io non sono sicuro se la versione tail-recursive
della funzione sarà ottimizzato da compilatore JavaScript come è fatto in altre lingue come Scala ecc. Qualcuno può darmi una mano su questo?
linea 2 nel frammento di coda-ricorsiva deve essere 'funzione di fatto (n, acc)' al fine di lavorare. Grazie per il frammento, stavo cercando di capirlo oggi! –