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

