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

