ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3....
TRANSCRIPT
![Page 1: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/1.jpg)
РЕШЕНИЯ ЗАДАЧИ №11 ЕГЭ-2017
ПО ИНФОРМАТИКЕ
РЕКУРСИВНЫЕ АЛГОРИТМЫ
![Page 2: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/2.jpg)
Средний процент выполнения
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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/3.jpg)
Уровень сложности
Фактически это задание на проверку умения исполнить алгоритм с простым ветвлением и вызовом элементарной функции, записанный на языке высокого уровня.
![Page 4: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/4.jpg)
Типы задач ЕГЭ
![Page 5: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/5.jpg)
Методы решения задач
1. Метод формального исполнения
(трассировки) алгоритма;
2. Методы записи рекуррентных соотношений и
построения таблиц значений:
a) Построение дерева вызовов
b) Подстановка
c) Составление полной таблицы
d) Динамическое программирование
![Page 6: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/6.jpg)
Пример задания
![Page 7: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/7.jpg)
Формальное исполнения алгоритма Вызов F(9)
![Page 8: ПО ИНФОРМАТИКЕdepartugansk.ru/storage/app/uploads/public/5a9/fd9/e32/5... · 2018. 3. 7. · Методы решения задач 1. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/8.jpg)
Построение дерева вызовов
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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/9.jpg)
Дан рекурсивный алгоритм: 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/10.jpg)
Дан рекурсивный алгоритм: 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/11.jpg)
Метод составление полной таблицы
Алгоритм вычисления значений функций 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/12.jpg)
При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/13.jpg)
При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/14.jpg)
При выполнении приведённой ниже программы на экран было выведено математическое выражение. Вычислите его значение. 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. Метод формального](https://reader035.vdocuments.site/reader035/viewer/2022071022/5fd652366354f70653563441/html5/thumbnails/15.jpg)
Литература
Рекомендованные ФИПИ материалы К.Ю. Полякова (http://kpolyakov.spb.ru)