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

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

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

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


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

Показать ответ
3
Подсказки (3)
  1. Проследите цепочку вызовов функций, начиная с F(9). Каждый вызов G печатает одну «звёздочку».
  2. После вызова F(n) вызывается G(n - 2), а после G(k), если k > 1, вызывается F(k - 1).
  3. Цепочка имеет вид: F(9) → G(7) → F(6) → G(4) → F(3) → G(1) → F(0). Функция G вызывается три раза.
Решение
1. При вызове F(9) условие n > 0 выполняется, поэтому вызывается G(7).
F(9)→G(7)

2. Функция G(7) печатает один символ и вызывает F(6), так как 7 > 1.
G(7)→F(6)

3. Далее аналогично выполняются вызовы G(4) и G(1), каждый из которых печатает по одному символу.
F(6)→G(4)→F(3)→G(1)→F(0)

4. После вызова F(0) дальнейших вызовов нет. Всего функция G была вызвана три раза.
1+1+1=3
Частые ошибки
  • Считать количество вызовов F вместо количества вызовов G.
  • Забыть, что функция G печатает символ до проверки условия n > 1.
  • Не учитывать завершающий вызов G(1), который печатает символ, но не вызывает F.

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

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

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

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

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

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

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

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

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