9. Определите, что выведет на экран программа при вызове F(8). procedure F(n: integer);
begin
if n > 0 then begin
F(n - 4);
write(n);
F(n div 2);
end
end;

10. Определите, что выведет на экран программа при вызове F(9).
procedure F(n: integer);
begin
if n > 0 then begin
F(n div 3);
write(n);
F(n - 3);
end
end;

ноген1 ноген1    3   25.02.2021 19:05    39

Ответы
maxbf maxbf  25.12.2023 05:20
Первая программа имеет следующий код:

```
procedure F(n: integer);
begin
if n > 0 then begin
F(n - 4);
write(n);
F(n div 2);
end
end;
```

Когда программа вызывается с аргументом F(8), она будет работать следующим образом:

1. Шаг 1: Вызов `F(8)`
2. Шаг 2: `n > 0` выполняется, так как 8 больше нуля.
3. Шаг 3: Вызов `F(8 - 4)`, это `F(4)`
4. Шаг 4: Переход на шаг 1 с аргументом 4
5. Шаг 1: Вызов `F(4)`
6. Шаг 2: `n > 0` выполняется, так как 4 больше нуля.
7. Шаг 3: Вызов `F(4 - 4)`, это `F(0)`
8. Шаг 4: Переход на шаг 1 с аргументом 0
9. Шаг 2: `n > 0` не выполняется, так как 0 не больше нуля.
10. Шаг 6: Вызов `write(0)`, программа выводит 0 на экран
11. Шаг 7: Вызов `F(0 div 2)`, это `F(0)`
12. Шаг 2: `n > 0` не выполняется, так как 0 не больше нуля.
13. Конец выполнения функции `F(0)`
14. Конец выполнения функции `F(4)` (поскольку `F(0)` в основной функции)
15. Шаг 6: Вызов `write(4)`, программа выводит 4 на экран
16. Шаг 7: Вызов `F(4 div 2)`, это `F(2)`
17. Переход на шаг 1 с аргументом 2
18. Шаг 1: Вызов `F(2)`
19. Шаг 2: `n > 0` выполняется, так как 2 больше нуля.
20. Шаг 3: Вызов `F(2 - 4)`, это `F(-2)`
21. Переход на шаг 1 с аргументом -2
22. Шаг 2: `n > 0` не выполняется, так как -2 не больше нуля.
23. Конец выполнения функции `F(-2)`
24. Конец выполнения функции `F(2)` (поскольку `F(-2)` в основной функции)
25. Шаг 6: Вызов `write(2)`, программа выводит 2 на экран
26. Шаг 7: Вызов `F(2 div 2)`, это `F(1)`
27. Переход на шаг 1 с аргументом 1
28. Шаг 1: Вызов `F(1)`
29. Шаг 2: `n > 0` выполняется, так как 1 больше нуля.
30. Шаг 3: Вызов `F(1 - 4)`, это `F(-3)`
31. Переход на шаг 1 с аргументом -3
32. Шаг 2: `n > 0` не выполняется, так как -3 не больше нуля.
33. Конец выполнения функции `F(-3)`
34. Конец выполнения функции `F(1)` (поскольку `F(-3)` в основной функции)
35. Шаг 6: Вызов `write(1)`, программа выводит 1 на экран
36. Шаг 7: Вызов `F(1 div 2)`, это `F(0)`
37. Шаг 2: `n > 0` не выполняется, так как 0 не больше нуля.
38. Конец выполнения функции `F(1)`
39. Конец выполнения функции `F(8)` (поскольку `F(0)` в основной функции)

Итак, при вызове `F(8)` программа выведет следующую последовательность чисел на экран: 0 4 2 1.

Теперь перейдем ко второй программе:

```
procedure F(n: integer);
begin
if n > 0 then begin
F(n div 3);
write(n);
F(n - 3);
end
end;
```

Когда программа вызывается с аргументом F(9), она будет работать следующим образом:

1. Шаг 1: Вызов `F(9)`
2. Шаг 2: `n > 0` выполняется, так как 9 больше нуля.
3. Шаг 3: Вызов `F(9 div 3)`, это `F(3)`
4. Переход на шаг 1 с аргументом 3
5. Шаг 1: Вызов `F(3)`
6. Шаг 2: `n > 0` выполняется, так как 3 больше нуля.
7. Шаг 3: Вызов `F(3 div 3)`, это `F(1)`
8. Переход на шаг 1 с аргументом 1
9. Шаг 1: Вызов `F(1)`
10. Шаг 2: `n > 0` выполняется, так как 1 больше нуля.
11. Шаг 3: Вызов `F(1 div 3)`, это `F(0)`
12. Шаг 2: `n > 0` не выполняется, так как 0 не больше нуля.
13. Конец выполнения функции `F(0)`
14. Конец выполнения функции `F(1)` (поскольку `F(0)` в основной функции)
15. Шаг 6: Вызов `write(1)`, программа выводит 1 на экран
16. Шаг 7: Вызов `F(1 - 3)`, это `F(-2)`
17. Переход на шаг 1 с аргументом -2
18. Шаг 2: `n > 0` не выполняется, так как -2 не больше нуля.
19. Конец выполнения функции `F(-2)`
20. Конец выполнения функции `F(3)` (поскольку `F(-2)` в основной функции)
21. Шаг 6: Вызов `write(3)`, программа выводит 3 на экран
22. Шаг 7: Вызов `F(3 - 3)`, это `F(0)`
23. Шаг 2: `n > 0` не выполняется, так как 0 не больше нуля.
24. Конец выполнения функции `F(3)`
25. Конец выполнения функции `F(9)` (поскольку `F(0)` в основной функции)

Итак, при вызове `F(9)` программа выведет следующую последовательность чисел на экран: 1 3.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика