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

