Давайте поговорим о рекурсии. Но что сказать? Начнем с формального определения, которое я нашел на сайте Школы вычислительной техники (Университет Юты):

Рекурсия означает «определение проблемы с точки зрения самой себя». Это может быть очень мощным инструментом при написании алгоритмов.

Но что значит само по себе? Давайте посмотрим на это с другой стороны, на этот раз из курса Ускоренный курс по Python на Coursera. Рекурсия определяется следующим образом:

Рекурсия — это повторное применение одной и той же процедуры к меньшей задаче. (…) давайте решать сложные проблемы, сводя проблему к более простой.

Но как мы используем рекурсию? Взгляните на это базовое упражнение из ускоренного курса по Python на Coursera:

Как видите, мы снова вызываем функцию sum_positive_numbers() внутри функции sum_positive_numbers() и тем самым избегаем добавления дополнительных строк кода, поскольку последний возврат суммирует все числа до тех пор, пока n не станет равным 0, а затем выполнение завершится возвратом внутри if.

Давайте проследим за выполнением sum_positive_numbers(3):

  1. Оценка: 3 равно 0? Нет.
  2. Затем он возвращает сумму 3 и результат sum_positive_numbers(3–1):
  • sum_positive_numbers(2) оценивает, равно ли 2 0. Затем возвращается сумма 2 и sum_positive_numbers(2–1).
  • -›sum_positive_numbers(1) оценивает, равно ли 1 0. Теперь он возвращает сумму 1 и sum_positive_numbers(1–1)
  • -››sum_positive_numbers(0) оценивает, равен ли 0 0. В этом случае функция возвращает текущее значение n, равное 0.

3. Теперь он суммирует цепочку возвратов sum_positive_numbers(): 3+2+1+0 равно 6.

Я знаю, рекурсия кажется сложной техникой, и лично я не чувствую себя достаточно опытным, чтобы использовать ее, но я знаю достаточно, чтобы понять, насколько мощной она может быть и как она может расширить возможности моего кода!

Вы можете добавлять любые комментарии, делиться опытом или отмечать любые исправления в моем объяснении. Я здесь, чтобы учиться!

Спасибо за прочтение, увидимся в следующей статье 😊