Рекурсия — функция, которая вызывает себя
Решаем задачу через уменьшенную копию самой себя.
Hook
Ветка дерева похожа на маленькое дерево. Многие задачи устроены так же: «большое = маленькое + шаг».
Concept
Термины: list, dictionary, loop, function — пишем по-английски, объясняем по-русски.
Рекурсия работает, когда есть:
1) базовый случай (когда остановиться);
2) рекурсивный шаг (как уменьшить задачу).
Пример факториала:
fact(n) = n * fact(n-1), если n>1; иначе 1.
Практика
Задание 1: заполни базовый случай n == 1.
if n == 1:
return 1
Заполни пропуски в коде в своей тетради/редакторе. Ключевые ответы: 1.
Задание 2: допиши рекурсивный вызов для суммы 1..n.
return n + sum_to_n(n-1)
Проверь себя: n-1.
Сборка: мини-проект
Сделай рекурсивный обход меню квестов (вложенные категории) и выведи все названия квестов.
Комбинируем текущую тему с предыдущими навыками.
Reflection
Теперь ты различаешь рекурсию и цикл, и понимаешь, когда рекурсивная модель делает код проще.