Индивидуальный рабочий лист
Предмет: Информатика | Класс: 10
Тема урока: Рекурсия
Педагог: ____________________
Школа: ____________________
ФИ ученика: ______________________________
Дата: ______________
Инструкция для ученика:Перед тобой 5 заданий по теме «Рекурсия». Внимательно читай формулировку каждого задания. Выполняй их по порядку, записывая ответы в отведённые места. В заданиях, где нужно написать код, используй язык Python. Удачи!
1 Теоретический вопрос (базовый уровень)
Задание: Что такое базовый случай (base case) в рекурсивной функции? Почему он обязателен? Приведи пример базового случая для функции вычисления факториала.
2 Анализ кода (средний уровень)
Задание: Дан рекурсивный код:
def mystery(a, b): if b == 0: return 0 else: return a + mystery(a, b - 1)
Что вычисляет эта функция? Запиши ответ словами. Чему будет равен результат вызова mystery(3, 4)? Напиши пошаговый ход рекурсии (цепочку вызовов) для этого примера.
3 Практическая задача: Факториал (средний уровень)
Задание: Напиши рекурсивную функцию factorial(n), которая вычисляет факториал числа n (n! = n * (n-1) * ... * 1, при этом 0! = 1). Функция должна корректно обрабатывать только неотрицательные целые числа. Если n < 0, функция должна возвращать -1 (код ошибки). Проверь работу функции для n = 5 и n = -2.
Напиши код функции и результат её вызова для n = 5 и n = -2:
4 Практическая задача: Сумма цифр (повышенный уровень)
Задание: Напиши рекурсивную функцию sum_digits(n), которая возвращает сумму цифр целого положительного числа n. Например, sum_digits(123) должна вернуть 6 (1+2+3). Подсказка: n % 10 — последняя цифра, n // 10 — число без последней цифры. Базовый случай: если n == 0, вернуть 0. Проверь работу для n = 789 и n = 1001.
Напиши код функции и результат её вызова для n = 789 и n = 1001:
5 Творческое задание: Цифровой корень (высокий уровень)
Задание: Создай рекурсивную функцию digital_root(n), которая вычисляет цифровой корень числа (результат рекурсивного сложения цифр до тех пор, пока не останется одна цифра). Используй внутри функцию sum_digits из задания 4. Добавь глобальный счётчик call_count, который считает, сколько раз была вызвана функция digital_root. Выведи количество вызовов для n = 9875.
Пример: digital_root(9875) -> 9+8+7+5 = 29 -> 2+9 = 11 -> 1+1 = 2. Ответ: 2.
Напиши код функции и результат её выполнения для n = 9875: