Во многих функциональных языках использование рекурсии считается хорошей практикой. Я думаю, что это хорошо из-за того, как компилятор оптимизирует код функционального языка.В C# хорошо ли использовать рекурсивные функции в алгоритмах?
Но хорошо ли использовать рекурсию в C# при создании алгоритма? Правильно ли говорить в отношении C#, что рекурсивные алгоритмы приведут к тому, что ваш стек будет расти довольно резко (если количество вызовов очень велико), и это не будет вообще быстрым и может привести к переполнению стека. Или есть какая-то оптимизация, чтобы сделать рекурсивные функции эффективными?
Я был бы признателен, если бы вы дали некоторое сравнение (скорость, память, читаемость) между алгоритмами, использующими рекурсию в функциональных языках и C#.
По крайней мере, используйте рекурсию, когда это имеет смысл (и вы можете, то есть когда это не приведет к переполнению стека) - например. для обхода дерева и для алгоритмов, которые становятся очень уродливыми/сложными при преобразовании в итерацию. – delnan
http://stackoverflow.com/questions/491376/why-doesnt-net-c-eliminate-tail-recursion –