![Фавий](https://sproshu.net/uploads/ava/1/ava4057.jpg)
Фавий
4 год назад
посчитайте ПОЖАЛУЙСТО 10 класс
![](https://store.sproshu.net/212e/c97dcad788c.jpg)
ОТВЕТЫ
![Желязко](https://sproshu.net/uploads/ava/3/ava8347.jpg)
Желязко
Nov 23, 2020
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;
чтобы компилятор знал, какие аргументы принимает и что возвращает функция
266
Смежные вопросы: