Discussione: [C] Ricorsività
Visualizza messaggio singolo
Vecchio 09-11-2007, 16.09.00   #9
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Effettivamente è piuttosto difficile riuscire a spiegare il concetto.
Cominciamo dalle cose semplici: il fattoriale di 5 è 120
E' come se l'operazione di moltiplicazione fosse da intendersi in questo modo: 5*4*3*2*1
Si può ottenere lo stesso risultato in questo modo: 5*1*2*3*4
In entrambi i casi, ci si ferma dopo 5-1 volte, cioè dopo 4 moltiplicazioni: 4 è dato infatti da 5-1
Lo scopo principale di una funzione ricorsiva è sapere quante volte è necessario iterare fino a fermarsi; Fermarsi è il punto.
Ogni funzione genera al suo interno una serie di operazioni, ma termina quando il risultato delle operazioni è un numero finito, non il risultato di un' ulteriore operazione algebrica.
Il return a meno che non lo si forzi a restituire 0 si aspetta sempre un valore positivo il più vicino possibile a zero.
Nel nostro caso, n*fattoriale(n-1) si fermerà quando (n-1) sarà uguale a 1
5*(5-1)=20
20*(4-1)=60
60*(3-1)=120
120*(2-1)=120
Sono 4 le operazioni e 2-1=1.
Perdonatemi matematici, ma io sono terra-terra quando spiego. :-(
LoryOne non è collegato   Rispondi citando