Ниже на пяти языках программирования записан рекурсивный алгоритм F.
| Бейсик | Python |
|---|---|
SUB F(n) IF n > 0 THEN F(n \ 3) PRINT N F(n − 3) END IF END SUB
| def F(n): if n > 0: F(n // 3) print(n) F(n − 3)
|
| Паскаль | Алгоритмический язык |
procedure F(n: integer); begin if n > 0 then begin F(n div 3); write(n); F(n − 3); end end;
| алг F(цел n) нач если n > 0 то F(div(n,3)) вывод n F(n − 3) все кон
|
| С++ | |
void F (int n) { if (n > 0) { F (n / 3); std::cout << n; F (n − 3); } }
| |
Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Первым действием процедура F(9) вызовет процедуру F(n/3), т. е. F(3), которая вызовет процедуру F(1), которая вызовет процедуру F(0), после чего на экран будет выведена единица. После этого управление вернётся к процедуре F(3), которая начнёт выполнять следующий шаг своего алгоритма и выведет на экран число 3, после чего процедура F(3) вызовет процедуру F(0).
После этого управление вернётся к процедуре F(9), которая следующим шагом своего алгоритма выведет на экран число 9, после чего обратится к процедуре F(n−3), т. е. обратится к процедуре F(6), которая вызовет процедуру F(2), после чего на экран будет выведено число 2.
Далее процедура F(6) начнёт выполнять следующий шаг своего алгоритма, в результате на экран будет выведено число 6, после этого будет вызвана процедура F(3), которая вызовет процедуры F(1) и F(0), после чего на экран будет выведена единица, а после этого на экран будет выведено число 3.
Ответ: 1392613.

