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

