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.
ESEMPIO
Se la chiamo per n=3, lui entra ed esegue
codice:
n= 3* fattoriale(2)
, per calcolare fattoriale di due esegue
codice:
n=2*fattoriale(1)
, il fattoriale di 1 torna 1, quindi la prima chiamante in definitiva fa
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


ok grazie.Sembra di esserci riuscito.Un ultima domanda.. Quando alloco una struttura dati, che sia un albero o una lista o che si voglia, alla fine devo sempre deallocarla. giusto?