ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3....

15
РЕШЕНИЯ ЗАДАЧИ №11 ЕГЭ-2017 ПО ИНФОРМАТИКЕ РЕКУРСИВНЫЕ АЛГОРИТМЫ

Transcript of ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3....

Page 1: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

РЕШЕНИЯ ЗАДАЧИ №11 ЕГЭ-2017

ПО ИНФОРМАТИКЕ

РЕКУРСИВНЫЕ АЛГОРИТМЫ

Page 2: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Средний процент выполнения

0

10

20

30

40

50

60

2015 2016 2017

Основная содержательная ошибка – неспособность построить последовательность косвенных рекурсивных вызовов.

Page 3: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Уровень сложности

Фактически это задание на проверку умения исполнить алгоритм с простым ветвлением и вызовом элементарной функции, записанный на языке высокого уровня.

Page 4: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Типы задач ЕГЭ

Page 5: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Методы решения задач

1. Метод формального исполнения

(трассировки) алгоритма;

2. Методы записи рекуррентных соотношений и

построения таблиц значений:

a) Построение дерева вызовов

b) Подстановка

c) Составление полной таблицы

d) Динамическое программирование

Page 6: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Пример задания

Page 7: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Формальное исполнения алгоритма Вызов F(9)

Page 8: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Построение дерева вызовов

F9

F6

91

F5 54

F8 62 83

F7 75

F4 46 F6 67

Вызов F(9)

Ответ: 9685746

Page 9: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n < 6 then begin F(n+2); F(n*3) end end; Найдите сумму чисел, которые будут выведены при вызове F(1).

МЕТОД ПОДСТАНОВКИ

1) Сначала определим рекуррентную

формулу; обозначим через G(n) сумму чисел,

которая выводится при вызове F(n)

2) При n >= 6 процедура выводит число n и

заканчивает работу без рекурсивных

вызовов:

G(n) = n при n >= 6

3) При n < 6 процедура выводит число n и

дважды вызывает сама себя:

G(n) = n + G(n+2) + G(3n) при n < 6

4) В результате вызова F(1) получаем

G(1) = 1 + G(3) + G(3)

G(3) = 3 + G(5) + G(9) = 3 + G(5) + 9

G(5) = 5 + G(7) + G(15) = 5 + 7 + 15 = 27

5) Используем обратную подстановку:

G(3) = 3 + G(5) + 9 = 3 + 27 + 9 = 39

G(1) = 1 + 2*G(3) = 79

6) Ответ: 79.

Page 10: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n < 6 then begin F(n+2); F(n*3) end end; Найдите сумму чисел, которые будут выведены при вызове F(1).

Метод динамического программирования 1) Сначала определим рекуррентную формулу; обозначим через G(n) сумму чисел, которая выводится при вызове F(n) 2) При n >= 6 процедура выводит число n и заканчивает работу без рекурсивных вызовов: G(n) = n при n >= 6 3) При n < 6 процедура выводит число n и дважды вызывает сама себя:

G(n) = n + G(n+2) + G(3n) при n < 6

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

G(n

)

6 7 8 9 10 11 12 13 14 15 27 22 39 30 79

Page 11: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Метод составление полной таблицы

Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями: F(1) = 1; G(1) = 1; F(n) = F(n – 1) – G(n – 1), G(n) = F(n–1) + G(n – 1), при n >=2 Чему равно значение величины F(5)/G(5)? В ответе запишите только целое число.

1) Фактически рекуррентная

формула задана для пары

(F(n); G(n))

2) Замечаем, что F(n) – это

разность предыдущей пары, а

G(n) – сумма тех же значений

3) Заполняем таблицу, начиная

с известной первой пары

N 1 2 3 4 5

F(n) 1 0 -2 -4 -4

G(n) 1 2 2 0 -4

Page 12: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. procedure F(n: integer); begin write('5'); if n > 0 then begin write('+'); G(n - 1); end; end; procedure G(n: integer); begin write('2'); if n > 1 then F(n - 2); end; begin write('2*('); f(8); write(')'); end.

Формальное исполнения алгоритма Команда

Результат выполнения

Вывод

write('2*('); Вывод 2*( 2*(

F(8) Вызов F(8)

write('5'); Вывод 5 5

if n > 0 8 > 0 истина

write('+'); Вывод + +

G(n - 1); G(7);

write('2'); Вывод 2 2

if n > 1 then 7>1 иснина

F(n - 2); F(5);

write('5'); Вывод 5 5

if n > 0 5 > 0 истина

write('+'); Вывод + +

G(n - 1); G(4);

write('2'); Вывод 2 2

if n > 1 then 4>1 иснина

Page 13: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. procedure F(n: integer); begin write('5'); if n > 0 then begin write('+'); G(n - 1); end; end; procedure G(n: integer); begin write('2'); if n > 1 then F(n - 2); end; begin write('2*('); f(8); write(')'); end.

Формальное исполнения алгоритма Команда Результат выполнения

Вывод Примечание

F(n-2) Вызов F(2)

write('5'); Вывод 5 5

if n > 0 2 > 0 истина

write('+'); Вывод + +

G(n - 1); G(1);

write('2'); Вывод 2 2

if n > 1 then 1>1 ложь

end Возврат в F(2)

end Возврат в G(4)

end Возврат в F(5)

end Возврат в G(7)

end Возврат в F(8)

write(')'); Вывод ) )

end. Конец программы

Page 14: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. procedure F(n: integer); begin write('5'); if n > 0 then begin write('+'); G(n - 1); end; end; procedure G(n: integer); begin write('2'); if n > 1 then F(n - 2); end; begin write('2*('); f(8); write(')'); end.

2*(F(8)) F(8)= 5+G(7) G(7)=2F(5) F(5)=5+G(4) G(4)=2F(2) F(2)=5+G(1) G(1)=2; F(2)=5+G(1)=5+2 G(4)=2F(2)=25+2 F(5)=5+G(4)=5+25+2 G(7)=2F(5)=25+25+2 F(8)= 5+G(7)=5+25+25+2 2*(F(8))=2*(5+25+25+2)=114

МЕТОД ПОДСТАНОВКИ

Page 15: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального

Литература

Рекомендованные ФИПИ материалы К.Ю. Полякова (http://kpolyakov.spb.ru)