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