Контрольные тренировочные задания
(решения)




Часть 1


Задание 11


Решение примера 1

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

Сколько символов "звёздочка" будет напечатано на экране после выполнения вызова F(11)?
Ответ: ___________________________.

Решение.

Рекурсивная функция — это функция, вызывающая сама себя. Нам даны две процедуры со взаимной рекурсией, то есть процедура F вызывает процедуру G, а процедура G — процедуру F.
Как мы видим, символ "звёздочка" выводится на экран при вызове процедуры G, при этом "звёздочка" печатается в любом случае, независимо от условия.
То есть для решения задания нам достаточно определить, сколько раз будет вызвана процедура G при вызове F(11).

Вызовы процедур мы можем записать так:
F(11) -> G(10) -> F(7) -> G(6) -> F(3) -> G(2) -> F(-1)

На процедуре F(-1) рекурсия завершится, так как условие n>0 перестанет выполняться.

Осталось посчитать, сколько раз была вызвана процедура G:
F(11) -> G(10) -> F(7) -> G(6) -> F(3) -> G(2) -> F(-1)

Всего три раза.

Ответ: 3

Возврат на страницу    Решение примеров части 1 задание 11



Наверх