Noi faremo un uso massiccio della ricorsione durante il corso. Quando andiamo a richiamare una funzione, dovreste sapere che in memoria viene generato il record di attivazione della funzione che contiene un elemento per ogni parametro e per ogni elemento locale, oltre a contenere una porzione speciale per la variabile di ritorno. ![[ img/sezione3/ricorsione.PNG]] *Una funzione è ricorsiva se richiama se stessa!* Come esempio, vediamo il calcolo del fattoriale di un numero: ```cpp int fact(int val) { if(val <= 1) return 1; // CASO BASE else // QUI L'ELSE PUO' ESSERE EVITATO return fact(val-1) * val; } ``` Se, per esempio, scriviamo nel nostro *main* il comando *cout<