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