procedure F(n: integer); begin write(n); if n >= 4 then begin F(n div 3); F(n - 1) end end; Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(6). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Есть ответ
12.12.2022
511

Ответ


Ответ:
6251413
Объяснение:
Поскольку функция рекурсивно вызывает себя и при каждом вызове выводит переданное число, удобно будет записать выводимые числа в столбик, обозначая глубину стека (количество рекурсивных вызовов) и произойдет ли вызов. Очередная пара рекуррентных вызовов происходит при передаче числа больше или равного четырём.
0: F(6) -> 6 (вызов произойдёт)
1: F(2) -> 2 (вызов не произойдёт)
1: F(5) -> 5 (вызов произойдёт)
2: F(1) -> 1 (вызов произойдёт)
2: F(4) -> 4 (вызов произойдёт)
3: F(1) -> 1 (вызов не произойдёт)
3: F(3) -> 3 (вызов не произойдёт)


Если вы нашли правильное решение, вы можете поблагодарить нас начиная с 10 рублей.
Просто нажмите на кнопку "Подарить".
12.12.2022
Этот сайт использует cookies (Политика Cookies). Вы можете указать условия хранения и доступ к cookies в своем браузере.