ЕГЭ Информатика 2022: Задача 16 (Рекурсия)

Продолжаем разбирать демоверсию ЕГЭ по информатике 2022 года. Сегодня разберём задание №16, посвящённое вычислению рекуррентных выражений, то есть заданию на рекурсию и рекурсивные функции.

Рекурсия

Вкратце, рекурсия в программировании — это использование функции, которая в процессе своего выполнения ссылается сама на себя. Рекурсивная функция вызывает саму себя.

Условие задачи

Алгоритм вычисления значения функции f(n), где n — натуральное число, задан следующими соотношениями:

  • f(n) = 1, при n = 1
  • f(n) = n + f(n-1), если n > 1 и n — чётное
  • f(n) = 2 * f(n-2), если n > 1 и n — нечётное

Необходимо вычислить значение функции f(26). В предыдущие годы значения функции были меньше, позволяя решить задачу вручную. Сейчас же, учитывая увеличенные значения, необходимо программирование.

Решение задачи

Для решения создадим рекурсивную функцию на Python:

def f(n):
    if n == 1:
        return 1
    elif n % 2 == 0:  # n чётное
        return n + f(n - 1)
    else:  # n нечётное
        return 2 * f(n - 2)

print(f(26))

Код начинается с ключевого слова def, далее следует имя функции f, принимающей один параметр n.

  • Если n равно 1, функция возвращает 1.
  • Если n больше 1 и чётное (n % 2 == 0), функция возвращает n + f(n — 1).
  • В противном случае (n нечётное), функция возвращает 2 * f(n — 2).

Функция вызывается с аргументом 26: print(f(26)). Это выведет результат на экран.

Результат

Запустив код, получаем результат: 4122. Это правильный ответ на задание.

Что будем искать? Например,программа