Un concetto un po' difficile da spiegare a chi non è programmatore è quello delle funzioni ricorsive: una procedura (o funzione) è difinita ricorsiva quando al suo interno ha una chiamata a se stessa.
Il concetto è quello di semplificare il problema suddividendolo in casi più semplici e poi combinando i risultati per avere la soluzione.
Un esempio "scolastico" aiuta a spiegare il concetto: il calcolo del fattoriale.
Il fattoriale di un numero è il prodotto dei numeri interi minori o uguali al numero stesso, ad esempio il fattoriae di 5 è uaugle a 5 x 4 x 3 x 2 x 1 = 120.
L'esempio qui sotto calcola il fattoriale con la ricorsività:
La tecnica delle procedure ricorsive ha il vantaggio di permettere di risolvere un problema, anche complesso, con poche righe di codice; ha lo svantaggio di richiedere molta memoria e di essere poco efficiente in termini di velocità.
Quando non ci sono particolari problemi di efficienza e/o memoria, l’approccio ricorsivo è in genere da preferire se:
- è più intuitivo di quello iterativo;
- la soluzione iterativa non è evidente o facile da implementare.
Un esempio classico è questo è l'analisi del
contenuto di una una cartella: nel caso di sottocartella deve essere ripetuta la stessa analisi e così via nel caso di ulteriori sottocartelle.