Рекурсивный подсчёт звёздочек
Ниже приведены две рекурсивные функции F и G. Функция F(n) вызывает G(n - 2), если n > 0. Функция G(n) печатает символ «*» и вызывает F(n - 1), если n > 1. Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(12)?
1def F(n): 2 if n > 0: 3 G(n - 2) 4 5def G(n): 6 print("*") 7 if n > 1: 8 F(n - 1)
Условие как в банке ФИПИ — открыть и сверить
| Ниже на пяти языках программирования записаны две рекурсивные функции (процедуры): F и G.
Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(12)? | ||||||||||||
| | ||||||||||||
Формат: число или слово без единиц измерения; дробную часть отделяйте запятой.
1Мягкая — с чего смотретьуровень 1 из 3
Проследите цепочку рекурсивных вызовов, начиная с $F(12)$. В каком случае функция $G$ печатает звёздочку?
2Наводящая — какие числа считатьуровень 2 из 3
Каждый вызов $F(n)$ при $n > 0$ вызывает $G(n - 2)$, а каждый вызов $G(n)$ печатает одну звёздочку и при $n > 1$ вызывает $F(n - 1)$.
3Прямая — фактически решениеуровень 3 из 3
Цепочка имеет вид $F(12) \to G(10) \to F(9) \to G(7) \to F(6) \to G(4) \to F(3) \to G(1)$. Функция $G$ вызывается 4 раза.