Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?
Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Бейсик
|
1 2 3 4 5 6 7 8 |
DECLARE SUB F(n) SUB F(n) IF n > 2 THEN PRINT n F(n - 3) F(n – 4) END IF END SUB |
Python
|
1 2 3 4 5 |
def F(n): if n > 2: print(n) F(n - 3) F(n – 4) |
Алгоритмический язык
|
1 2 3 4 5 6 7 8 |
алг F(цел n) нач если n > 2 то вывод n, нс F(n - 3) F(n – 4) все кон |
Паскаль
|
1 2 3 4 5 6 7 8 |
procedure F(n: integer); begin if n > 2 then begin writeln(n); F(n - 3); F(n – 4) end end; |
Си
|
1 2 3 4 5 6 7 |
void F(int n) { if (n > 2) { printf("%d\n", n); F(n - 3); F(n – 4); } } |
Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?
Ответ:
Демонстрационный вариант ЕГЭ 2017 г. – задание №11
Решение:
После каждого вызова на экран выводится значение параметра функции, если выполняется условие n>2.
Запишем все вызовы в виде таблицы.
| F10 | |||||||
| F7 | F6 | ||||||
| F4 | F3 | F3 | F2 | ||||
| F1 | F0 | F0 | F-1 | F0 | F-1 | F-1 | F-2 |
Складываем все значения параметров, которые больше 2.
10+7+6+4+3+3 = 33
Ответ: 33
