C# LanguageРекурсия


замечания

Обратите внимание, что использование рекурсии может оказать серьезное влияние на ваш код, так как каждый вызов рекурсивной функции будет добавлен в стек. Если слишком много вызовов, это может привести к исключению StackOverflow . Большинство «естественных рекурсивных функций» можно записать как конструкцию цикла for , while или foreach , и в то же время не выглядящие настолько шикарными или умными, будут более эффективными.

Всегда думайте дважды и тщательно используйте рекурсию - знайте, почему вы ее используете:

  • рекурсия должна использоваться, когда вы знаете, что количество рекурсивных вызовов не является чрезмерным
    • чрезмерные средства, это зависит от того, сколько памяти доступно
  • рекурсия используется, потому что это более ясная и чистая версия кода, более читаемая, чем итеративная или петлевая функция. Часто это происходит потому, что он дает более чистый и более компактный код (также меньше строк кода).
    • но помните, что он может быть менее эффективным! Например, в рекурсии Фибоначчи для вычисления n-го числа в последовательности время вычисления будет экспоненциально расти!

Если вы хотите больше теории, прочитайте:

Рекурсия Связанные примеры