Тема 5 · Информатика

Подпрограммы и рекурсия

Вспомогательные алгоритмы и функции на Питоне, параметры и локальные переменные, рекурсивные функции, деревья вызовов и число вызовов. 100 заданий на отработку.

0
Решено
0
Правильно
0%
Точность

Простыми словами

Подпрограмма — это готовый рецепт с названием. Повар не расписывает каждый раз, как варить бульон, а пишет «сварить бульон» — и рецепт выполняется. Рекурсия — рецепт, который ссылается сам на себя: «чтобы разобрать матрёшку, открой её и разбери ту, что внутри».

def f(a, b):
  c = a + b
  return c * 8
— параметры; при вызове f(17, 3) в них подставляются аргументы 17 и 3. return завершает функцию и отдаёт результат: .

Всё, что записано после сработавшего return, не выполняется. Переменная c локальная: снаружи функции её нет, и её изменение не влияет на одноимённую переменную вне функции.

Композиция функций

В записи g(f(x)) сначала вычисляется внутренняя функция, её результат становится аргументом внешней.

def f(a): return a * 2
def g(b): return b - 4
x = 22; print(g(f(x)))

  1. .
  2. .

Читайте вызовы изнутри наружу, как скобки в математике: — «сначала , потом ».

Рекурсия

База рекурсииусловие, при котором функция сразу возвращает ответ, не вызывая себя (if n <= 1: return 1).
Рекурсивный шагсведение задачи к такой же задаче меньшего размера (return 2 * F(n - 1) + 1).

Без базы вызовы вкладываются бесконечно, пока не переполнится стек вызовов (в Python — ошибка RecursionError).

def F(n):
  if n <= 1: return 1
  return 2 * F(n - 1) + 1
Найдём .

  1. Спускаемся до базы: .
  2. Поднимаемся снизу вверх: , , , .

F(n) = F(n - 1) + n * n, . Тогда .

Удобно заполнять таблицу от базы вверх: — так не нужно держать в голове цепочку вызовов.

Дерево вызовов и число вызовов

Если функция вызывает себя дважды, вызовы ветвятся. Число узлов дерева вызовов — общее число вызовов функции.

F(5)F(4)F(3)F(3)F(2)F(2)F(1)F(2)F(1) светлые — база, n ≤ 2 www.reknow.ru
, : при вызове функция вызывается 9 раз
— число вызовов при запуске ;

, , — совпадает с деревом.

Не забывайте «» — сам вызов тоже считается. А в вопросе «сколько раз вызвана » считают только узлы F(2): здесь их 3.

Серия: 0
Учителю

Готовые работы по теме

Собраны заранее — одним нажатием: распечатать с ключом, раздать ученикам ссылкой или QR-кодом, поменять настройки. Номер набора постоянный: по этой ссылке всегда та же работа.

Самостоятельная

10 заданий · 2 варианта · с ключом

РаспечататьРаздать ссылкойИзменить

Контрольная

15 заданий · онлайн, 40 минут

РаспечататьРаздать ссылкойИзменить

Диагностика перед темой

8 заданий · 15 минут

РаспечататьРаздать ссылкойИзменить

теория этой темы, 8 заданий по подтемам и ключ — файлом DOCX, который можно править под себя.

Учителю о теме

Что проверяется

  • Вызов подпрограммы
  • Композиция подпрограмм
  • Рекурсивная функция

Содержание

На бумаге — не больше 25: дальше лист перестаёт быть работой на урок. Онлайн — до 40.

Не нравится задание в собранном листе — нажмите «заменить» под ним: вместо него встанет другое из той же подтемы.

Варианты

Разные задания при одинаковом наборе тем и одинаковом числе заданий.

Прохождение онлайн

Имя ученика никуда не отправляется: он вводит только номер по списку, а таблицу «номер → фамилия» видите только вы.

Оценка
Печать

Собранный лист можно скачать файлом Word — кнопка «Скачать DOCX» над листом: задания, место под решение и ключ, всё редактируется.

Печатается над каждым вариантом. Хранится только в этом браузере, в ссылку не попадает.

По одному и тому же номеру собирается та же работа — ссылку можно сохранить и вернуться к ней позже.