Creare una funzione ricorsiva in javascript
Il linguaggio javascript mi permette di creare anche funzioni ricorsive.
In questo modo posso realizzare programmi basati sulla programmazione funzionale.
Cos'è una funzione ricorsiva? E' una funzione che richiama se stessa più volte. Ogni chiamata (invocazione) è una ricorsione. L'ultima chiamata chiude le ricorsioni facendo tornare indietro il risultato.
Ecco un esempio pratico di funzione ricorsiva sviluppata in javascript.
function fattoriale(n) {
var fatt=1;
if (n<=0) {
return(-1);
}
if (n==1) return(n);
fatt=n*fattoriale(n-1);
return(fatt);
}
Questo script calcola il fattoriale di un numero in modo ricorsivo.
Ad esempio, invoco la funzione fattoriale() passandogli un numero intero n=5
var f;
f=fattoriale(5);
document.write(f)
La funzione fattoriale(5) richiama se stessa tramite l'invocazione fattoriale(4)
A sua volta l'invocazione fattoriale(4) invoca l'esecuzione di fattoriale (3). E via dicendo.
Quando la chiamata è fattoriale(1) il programma non invoca più se stessa e chiude a ritroso tutte le ricorsioni aperte.
fatt = 5*fattoriale(4)*fattoriale(3)*fattoriale(2)*fattoriale(1)
fatt = 5*fattoriale(4)*fattoriale(3)*fattoriale(2)*1
fatt = 5*fattoriale(4)*fattoriale(3)*2*1
fatt = 5*fattoriale(4)*3*2
fatt = 5*4*6
fatt = 120
Alla fine restituisce il fattoriale di cinque ossia 5!=120
120
E così via.