16

Решение: Рекурсивный вызов функций

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

Ниже на пяти языках программирования записаны две рекурсивные функции (процедуры): F и G.

Функция F(n) вызывает G(n - 2), если n > 0. Функция G(n) печатает символ «*» и вызывает F(n - 1), если n > 1.

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

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

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

4 шага
1

При вызове F(9) условие n > 0 выполняется, поэтому вызывается G(7).

$$F(9) \to G(7)$$
2

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

$$G(7) \to F(6)$$
3

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

$$F(6) \to G(4) \to F(3) \to G(1) \to F(0)$$

После вызова F(0) дальнейших вызовов нет. Всего функция G была вызвана три раза.

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

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

Считать количество вызовов F вместо количества вызовов G.

Забыть, что функция G печатает символ до проверки условия n > 1.

Не учитывать завершающий вызов G(1), который печатает символ, но не вызывает F.

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

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

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

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