Задание 16 ЕГЭ по информатике · 4ADA78

Количество звёздочек при взаимной рекурсииПовышеннаяКЭС 3.7КЭС 3.16
Ниже приведены две рекурсивные функции F и G на языке Python.

def F(n):
if n > 0:
G(n - 1)

def G(n):
print("*")
if n > 1:
F(n - 3)


Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(12)?

Показать ответ
3
Подсказки (3)
  1. Сколько звёздочек печатает один вызов G(n)?
  2. Обозначьте через F(n) и G(n) количество напечатанных звёздочек. Учтите, что каждый вызов G печатает одну звёздочку.
  3. Последовательно раскройте вызовы: F(12) → G(11) → F(8) → G(7) → F(4) → G(3) → F(0).
Решение
1. Вызов F(12) вызывает G(11), так как 12 > 0.
F(12)=G(11)

2. Вызов G(11) печатает одну звёздочку и вызывает F(8), так как 11 > 1.
G(11)=1+F(8)

3. Аналогично последовательно получаем вызовы G(7), F(4), G(3), F(0). Каждый из вызовов G печатает по одной звёздочке.
F(12)→G(11)→F(8)→G(7)→F(4)→G(3)→F(0)

4. Вызов F(0) ничего не вызывает, поэтому рекурсия завершается. Функция G была вызвана три раза: G(11), G(7) и G(3).
1+1+1=3
Частые ошибки
  • Учитывать вызов F как печать звёздочки.
  • Продолжать рекурсию из F(0), хотя условие n > 0 не выполняется.
  • Забыть, что каждый вызов G печатает одну звёздочку до проверки условия n > 1.

Источник: Открытый банк ФИПИ

Похожие задания

Нужен репетитор по информатике?

Посмотрите репетиторов, которые ведут занятия в Precettore, или оставьте заявку — подберём сами.

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.