Allora... Prendendone una semplice:
Allora entri nella funzione, con ingressi 0 o 1 la funzione torna 1 (perchè così è definito il fattoriale), altrimenti copio n (vedi che non gli passo l'indirizzo, ma lo copio: è importante) e lo moltiplico per il fattoriale del numero che lo precede... In questo modo questa stessa funzione viene richiamata n-1 volte.codice://queata funzione restituisce il fattoriale di n (=1*2*3*...n-1*n) int fattoriale(int n) { If(n<=1) return 1; //il mio vero punto di uscita n *= fattoriale(n-1); return n; }
ESEMPIO
Se la chiamo per n=3, lui entra ed esegue, per calcolare fattoriale di due eseguecodice:n= 3* fattoriale(2), il fattoriale di 1 torna 1, quindi la prima chiamante in definitiva facodice:n=2*fattoriale(1)
N=1*2*3.
che è quello che volevamo ottenere.
Allora cosa ha di particolare questa funzione?
In primis ha un punto di uscita (return 1) che dopo un certo numero di chiamate viene SEMPRE raggiunto!
Se così non fosse la funzione continuerebbe a chiamare se stessa in modo infinito!
Dopo questo c'è la vera ricorsione: la runzione richiama se stessa con differenti input.
Infine faccio ritornare il valore calcolato.
Ora pensaci bene ed applica questi concetti alla tua situazione