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