16

Решение: Подсчёт рекурсивных вызовов

ЕГЭ · Информатика · Задание 16 · Алгоритмы и исполнители
ПовышеннаяФИПИ0D4EB5Короткий ответ≈ 4 минутыРазбор в 4 шагаОтвет сверен с ключом
Условие

Ниже приведены две рекурсивные функции F и G. Функция G печатает символ «звёздочка» и при выполнении условия вызывает функцию F. Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(14)?

Python
1def F(n):
2    if n > 0:
3        G(n - 3)
4
5def G(n):
6    print("*")
7    if n > 1:
8        F(n - 1)
Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

4 шага
1

Вызов F(14) удовлетворяет условию $n > 0$, поэтому выполняется вызов G(11).

$$F(14) \to G(11)$$
2

Функция G(11) печатает одну «звёздочку» и вызывает F(10), так как $11 > 1$.

$$G(11) \to F(10)$$
3

Аналогично продолжается цепочка рекурсивных вызовов.

$$F(10) \to G(7) \to F(6) \to G(3) \to F(2) \to G(-1)$$

Функция G была вызвана для аргументов $11$, $7$, $3$ и $-1$. Каждый такой вызов печатает один символ, а после G(-1) рекурсия прекращается.

$$1 + 1 + 1 + 1 = 4$$
Ответ
4
4
так ответ выглядит в бланке

Где здесь ошибаются

Не учитывать печать символа при вызове G(-1): условие проверяется только после команды print.

Остановить рекурсию при отрицательном аргументе G, хотя функция G всё равно успевает напечатать символ.

Посчитать вызовы F вместо вызовов G.

Закрепить приёмВ теме «Алгоритмы и исполнители» ещё 431 задача — с ответом и таким же разбором.
Тренироваться

Как решать задание 16 ЕГЭ, информатика

Разбор этой задачи разложен на 4 шага: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Алгоритмы и исполнители»: в ней 432 задачи, и у каждой есть такой же разбор. Регистрация не нужна.