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

