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

