Большую программу собирают из функций с понятным интерфейсом. Рекурсия — частный случай: функция решает задачу, сводя её к такой же, но меньшей.
Что нужно знать
- Проектирование сверху вниз: задача → подзадачи → функции; снизу вверх: решение из готовых функций. Этапы: постановка, алгоритм, программа, отладка, документирование.
- def имя(параметры): + документирующая строка """…""" первой строкой. Интерфейс — имя, параметры, результат.
- return возвращает значение и сразу завершает функцию. Без return результат — None. print выводит, но не возвращает.
- Логическая функция возвращает True/False: return n % 2 == 0; её удобно ставить прямо в if.
- Рекурсия: базовый случай (без вызова себя) + шаг, приближающий к нему. Пример: f(n) = n · f(n − 1), f(1) = 1.
- Вызовы уходят вглубь до базового случая, результаты возвращаются в обратном порядке. Действие ПОСЛЕ рекурсивного вызова выполняется «на обратном пути».
- Глубина рекурсии ограничена (~1000); превышение — RecursionError.
- Фрактал: каждый уровень повторяет рисунок в уменьшенном виде. Если вызов рождает k вызовов, элементов на уровне m — km; у снежинки Коха отрезков 4n.
Где чаще всего ошибаются
- Писать print вместо return и потом использовать «результат» функции, который равен None.
- Забывать базовый случай или делать шаг, не приближающий к нему (f(n) вызывает f(n)).
- Путать порядок вывода, когда print стоит до и после рекурсивного вызова.
- Считать ветви фрактального дерева только на последнем уровне, забывая про предыдущие.
Проверить себя
По этой же теме курса есть проверочная работа из 15 заданий на 25 минут. Проверка автоматическая, результат виден сразу — и по работе целиком, и по каждой теме.
Программирование на Python и C++ · 8 класс · Python: функции, рекурсия и фракталы