Контрольные тренировочные задания
(решения)
Часть 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