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

