Предмет: Информатика, автор: Leomatyx1337

РЕШИТЕ ПОЖАЛУЙСТО! 10 класс!

Приложения:

Ответы

Автор ответа: HP2020
2

Ответ:

9

Объяснение:

На "человеческом" языке функции делают следующее:

F(n) - если n положительное, запускает G(n - 1), иначе не делает ничего

G(n) - выводит одну звёздочку и, если n > 1, выводит еще одну звездочку и запускает F(n - 2).

Попробуем представить, что будет, если запустить F(13).

  • 13 > 0, так что F(13) запустит G(12)
  • G(12) выведет звездочку; т.к. 12 > 1, еще звездочку (итого 2) и запустит F(10)
  • 10 > 0, так что F(10) запустит G(9)
  • G(9) выведет звездочку; т.к. 9 > 1, еще звездочку (итого 4) и запустит F(7)
  • 7 > 0, так что F(7) запустит G(6)
  • G(6) выведет звездочку; т.к. 6 > 1, еще звездочку (итого 6) и запустит F(4)
  • 4 > 0, так что F(4) запустит G(3)
  • G(3) выведет звездочку; т.к. 3 > 1, еще звездочку (итого 8) и запустит F(1)
  • 1 > 0, так что F(1) запустит G(0)
  • G(0) выведет звездочку (итого 9); 0 < 1, так что больше ничего не произойдет.

P.S. Если забить код из условия как есть, то можно получить ошибку, связанную с тем, что во время инициализации функции F функция G еще не инициализирована. Это можно обойти при помощи опережающего определения: перед описанием F дописать

procedure G(n: integer); forward;

чтобы компилятор знал, какие аргументы принимает и что возвращает функция

Похожие вопросы
Предмет: Алгебра, автор: днише