Решение: Рекурсивный вызов функций
Ниже на пяти языках программирования записаны две рекурсивные функции (процедуры): F и G.
Функция F(n) вызывает G(n - 2), если n > 0. Функция G(n) печатает символ «*» и вызывает F(n - 1), если n > 1.
Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(9)?
Решение по шагам
4 шагаПри вызове F(9) условие n > 0 выполняется, поэтому вызывается G(7).
$$F(9) \to G(7)$$Функция G(7) печатает один символ и вызывает F(6), так как 7 > 1.
$$G(7) \to F(6)$$Далее аналогично выполняются вызовы 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$$Где здесь ошибаются
Считать количество вызовов F вместо количества вызовов G.
Забыть, что функция G печатает символ до проверки условия n > 1.
Не учитывать завершающий вызов G(1), который печатает символ, но не вызывает F.