Человек, никогда не совершавший ошибок, никогда не пробовал ничего нового.
А. Эйнштейн

ЕГЭ - Демоверсия 2018 №11

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Решение:

1. F(9) => n = 9

9>0 => “9” F(9-3) = F(6); F(9 div 3) = F(3)

2.1 n = 6

6>0 => “6” F(6-3) = F(3); F(6 div 3) = F(2)

n = 3

3>0 => “3” F(3-3) = F(0); F(3 div 3) = F(1)

n = 1

1>0 => “1” F(1-3) = F(-2); F(1 div 3) = F(0)

n=2

2>0 => “2” F(2-3) = F(-1); F(2 div 3) = F(0)

2.2 n=3

3>0 => “3” F(3-3) = F(0); F(3 div 3) = F(1)

n = 1

1>0 => “1” F(1-3) = F(-2); F(1 div 3) = F(0)

Вариантов удовлетворяющих условию больше нет. Получили следующую очерёдность чисел:

9631231

Ответ: 9631231

ЕГЭ - Демоверсия 2017 №11

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

 Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?

 

Решение:

Рекурсивный алгоритм – это алгоритм, решающий задачу путем сведения ее к решению одной или нескольких таких же задач, но в сокращенном их варианте.

Рассмотрим решение по шагам.

Изначально n = 10.

1. 10 > 2 => «10», F(7), F(6);

После первого шага рекурсивных функций становится две, и соответственно, на втором шаге условие проверится два раза.

2.1 7 > 2 => «7», F(4), F(3)

2.2 6 > 2 => «6», F(3), F(2)

После второго шага рекурсивных функций станет 4, но F(2) не пройдёт условие.

3.1 4 > 2 => «4», F(1), F(0)

3.2 3 > 2 => «3», F(0), F(-1)

3.3 3 > 2 => «3», F(0), F(-1)

После третьего шага рекурсивных функций станет 6, но все они не пройдут условие и значит выполнение закончится.

Складываем числа, которые были выведены в процессе выполнения алгоритма: 10 + 7 + 6 + 4 + 3 + 3 = 33.

 

Ответ: 33