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

