In molti linguaggi funzionali, l'utilizzo di una ricorsione è considerato una buona pratica. Penso che sia buono a causa del modo in cui il compilatore ottimizza il codice del linguaggio funzionale.In C# è una buona pratica utilizzare le funzioni ricorsive negli algoritmi?
Tuttavia, è buona norma utilizzare la ricorsione in C# durante la creazione di un algoritmo? È corretto dire in merito a C#, che gli algoritmi ricorsivi comporteranno un aumento notevole dello stack (se la quantità di chiamate è molto grande) e questo non sarà affatto veloce e potrebbe comportare un sovraccarico dello stack. O ci sono anche alcuni eventi di ottimizzazione per rendere efficienti le funzioni ricorsive?
Sarei grato se tu dessi qualche paragone (velocità, memoria, leggibilità) tra algoritmi che usano la ricorsione in linguaggi funzionali e C#.
Per lo meno, utilizzare la ricorsione quando ha senso (e si può, cioè quando non comporterà lo straripamento dello stack) - ad es. per tree traversal e per algoritmi che diventano molto brutti/complessi quando vengono convertiti in iterazione. – delnan
http://stackoverflow.com/questions/491376/why-doesnt-net-c-eliminate-tail-recursion –