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

