Предмет: Информатика,
автор: Leomatyx1337
РЕШИТЕ ПОЖАЛУЙСТО! 10 класс!
Приложения:
Ответы
Автор ответа:
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;
чтобы компилятор знал, какие аргументы принимает и что возвращает функция
Похожие вопросы
Предмет: Алгебра,
автор: днише
Предмет: Русский язык,
автор: Аноним
Предмет: Алгебра,
автор: lerasokolova11
Предмет: Математика,
автор: vadin122004
Предмет: Биология,
автор: zoreslava5