Задание 11 демонстрационного варианта ЕГЭ по информатике 2020 года предполагает анализ рекурсивного алгоритма и определение последовательности вывода чисел.
Рекурсивная функция
Рекурсивная функция — это функция, которая вызывает саму себя. Рассмотрим фрагмент кода на языке Python:
def f(n):
print(n)
if n >= 3:
f(n // 2)
f(n - 1)
Функция f(n) выводит значение переменной n. Если n больше или равно 3, она рекурсивно вызывает себя дважды: f(n // 2) (целочисленное деление n на 2) и f(n — 1).
Анализ вызова f(5)
Разберем по шагам вызов f(5):
- Вызывается f(5). Выводится 5.
- Условие n >= 3 истинно (5 >= 3).
- Вызывается f(5 // 2), эквивалентно f(2).
- Вызывается f(5 — 1), эквивалентно f(4).
- В f(2) условие n >= 3 ложно, выводится 2.
- В f(4) условие n >= 3 истинно:
- Вызывается f(4 // 2), эквивалентно f(2). Выводится 2.
- Вызывается f(4 — 1), эквивалентно f(3).
- В f(3) условие n >= 3 истинно:
- Вызывается f(3 // 2), эквивалентно f(1).
- Вызывается f(3 — 1), эквивалентно f(2). Выводится 2.
- В f(1) условие n >= 3 ложно, выводится 1.
- В f(2) условие n >= 3 ложно, выводится 2.
Последовательность вывода
Последовательность вывода чисел при вызове f(5): 5242312.
Порядок вывода
Вывод переменной n происходит перед проверкой условия. Изменение порядка операций повлияло бы на результирующую последовательность.
Правильный ответ на задание 11 — 5242312. Решение основано на понимании рекурсии и порядка выполнения операций.