I linguaggi funzionali come F# incoraggiano l'utilizzo della ricorsione piuttosto che dell'iterazione.  Solitamente quando una funzione o un metodo ne chiamano un altro viene aggiornata la "call stack" ovvero la pila che tiene traccia appunto della posizione in cui siamo nell'esecuzione e in quale punto dobbiamo eventualmente tornare.  Nel caso di ricorsioni molto profo ...

Supponiamo di avere un metodo che dobbiamo chiamare più volte e che esegue un calcolo lungo o comunque dispendioso in termini di risorse.  Supponiamo anche che non sappiamo prevedere con che parametri chiameremo questo metodo e quindi capiterà di chiamarlo più volte bella stessa esecuzione con gli stessi parametri e ripetere lo stesso calcolo più volte.  Come si ottimiz ...