Si dovrebbe evitare di risolvere problemi come il calcolo del fattoriale con la ricorsione, per non incorrere in un numero potenzialmente esplosivo di chiamate ricorsive.
Permettetemi di fare un appunto prestazionale trovato sul mio libro di testo (si, vi ho rotto le balle con le prestazioni)
Ricorsione e iterazione si basano su una struttura di controllo: rispettivamente selezione e iterazione. L'iterazione finisce quando si trova la condizione giusta, la ricorsione quando si arriva al caso base.
La ricorsione ha molti lati negativi: il numero di chiamate di funzione è generalmente alto, e ciò rappresenta un costo in termini di tempo di elaborazione e di memoria utilizzata (sapete tutti perchè).
L'iterazione è invece limitata ad una sola chiamata di funzione, per cui non vi è nè un eccesso di tempo di elaborazione nè un consumo eccessivo di memoria. A questo punto ci si chiede perchè utilizzare la ricorsione...
Qualsiasi problema che ha una soluzione ricorsiva, ne ha anche una iterativa, quindi sarebbe da evitare in software in cui la velocità (ma nemmeno) è un punto importante.
Bene si imparare l'argomento, e usarlo anche qualche volta se la ricorsione rispecchia il metodo piu' naturale per risolvere il problema indicato, ma niente di piu'.
In pratica non usate la ricorsione.