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

