Ниже на пяти языках программирования записан рекурсивный алгоритм 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 − 2); F(n div 2); end; write(n); end;
| алг F(цел n) нач если n > 3 то F(n − 2) F(div(n,2)) все вывод n кон
|
| С++ | |
void F (int n) { if (n > 3) { F (n − 2); F (n / 2); } std::cout << n; }
| |
Запишите подряд без пробелов и разделителей все числа, которые будут показаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Процедура F(9) вызовет процедуру F(7), которая вызовет процедуру F(5), которая вызовет процедуру F(3), после чего на экран будет выведено число 3. Далее будет вызвана процедура F(2), после чего на экран будут выведены числа 2 и 5. Далее процедура F(7) вызовет процедуру F(3). После этого на экран будут выведены числа 3 и 7.
Следующим шагом своего алгоритма процедура F(9) вызовет процедуру F(4), которая вызовет процедуру F(2). Эта процедура выведет на экран число 2. Далее будет вызвана процедура F(2), и на экран будут выведены числа 2, 4 и 9.
Таким образом, получаем ответ: 325372249.
Ответ: 325372249.

