вернуться
Информатика

Вопрос 11

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

 

Решение №1

Давайте посмотрим, что делают функции F и G. Функция F при положительном n вызывает функцию G от n-1. Если же n — ноль или меньше нуля, то функция F ничего не делает и, собственно, заканчивает своё выполнение.

Что делает функция G? Она печатает сразу же на экран * и вызывает при n>1 функцию F от n-3.

Давайте подставим:

F(11) вызывает G(10) (так как 11>0). G(10) печатает звёздочку (запомнили) и вызывает F(7) (10>1). F(7) вызывает G(6). G(6) печатает звёздочку (уже 2 шт.) и вызывает F(3). F(3) вызывает G(2). G(2) печатает третью звёздочку и вызывает F(-1). -1<0, поэтому функция F прекращается.

Итого, программа выведет 3 звёздочки.

Evgeny Smirnov