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

