Есть люди, которые понимают рекурсию быстро, но большинство упираются. Я обучал людей рекурсии на Python и решил поделиться своим подходом. Я упор делаю на практику, чтобы человек именно понимал, как рекурсивный цикл создавать и как он работает, и мог решать задачи через него. Задачи вроде «найти сумму всех чисел в разветвлённой структуре данных». То есть, если совсем просто,  в наборе данных, устроенном более сложно, чем список. Понимать вещи вроде стека вызовов и контекста выполнения я учу уже когда человек может прописать рекурсию, после этого теорию понять уже довольно легко.

Ниже запись первого моего вебинара, где я рассказываю, как это делать, но общие моменты распишу здесь

Проверяем готовность.

Перед тем, как браться за рекурсию, убедитесь, что более-менее поняли эти темы

  • Ветвления(вложенные до 3х можете использовать)
  • Циклы (без труда можете использовать вложенные циклы для задач вроде вывести таблицу умножения)
  • Списки(владеете индексами, отрицательными индексами, срезами и простыми операциями типа добавить, удалить элемент)
  • Подпрограммы/функции (можете написать функцию с параметрами и без, с return и без)

Если это есть, то можно пробовать взяться за рекурсию.

Нарабатываем на рекурсию

Чтобы начать понимать рекурсию, простой вариант пройти два этапа. Первый— нарешать простые задачки на циклы через рекурсию. Сумма, количество элементов, проверка наличия, максимальный элемент и т.д. Второй этап — такие же задачи на списки, элементами которых могут быть списки, элементами которых могут быть списки ... и так до вложенности в 1000.

Как решать:

1. Решаем задачу через цикл
2. Расписываем рекурсию текстом
3. Пишем рекурсивную функцию

Если не получилось, то находим готовые решения задачи и изучаем. Пробуем решить следующую. Время от времени возвращаемся назад и проверяем, можем ли решить прошлые задачи.

Точно так же это должно работать. Вот видео, сам вебинар начинается с 15:57