Презентация с дополнительными тремя задачами.

advertisement
РАЗБОР ЗАДАЧ ЕГЭ ПО
ТЕМЕ «РЕКУРСИВНЫЕ
АЛГОРИТМЫ»
ДОПОЛНЕНИЕ
Учитель информатики
ГБОУ «Школа №2036»
Федотова Галина Владимировна
fedotovagv@yandex.ru
ЗАДАЧА B6 (ИНФ_ДЕМО 2014)
РЕШЕНИЕ
Рекуррентные соотношения заданы:
Нужно найти значение функции 𝑭(𝟕).
𝟕 > 𝟐, подставляем 𝒏 = 𝟕 во второе соотношение:
𝑭 𝟕 = 𝑭 𝟔 + 𝟐 × 𝑭(𝟓)
Далее нужно найти 𝑭 𝟔 и 𝑭 𝟓
𝟔 > 𝟐 и 𝟓 > 𝟐, подставляем 𝒏 = 𝟔
и 𝒏 = 𝟓 во второе соотношение:
𝑭 𝟔 =𝑭 𝟓 +𝟐×𝑭 𝟒
𝑭 𝟓 = 𝑭 𝟒 + 𝟐 × 𝑭(𝟑)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения заданы:
Нужно найти значение функции 𝑭(𝟕).
Аналогично записываем соотношения для
𝑭 𝟒 и𝑭 𝟑 :
𝑭 𝟒 =𝑭 𝟑 +𝟐×𝑭 𝟐
𝑭 𝟑 = 𝑭 𝟐 + 𝟐 × 𝑭(𝟏)
В полученных соотношениях можно подставить
Значения функции 𝑭 𝟐 = 𝟏 и 𝑭 𝟏 = 𝟏,
т. к. при 𝑛 ≤ 𝟐 𝑭 𝒏 = 𝟏 (из условия задачи)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения заданы:
Нужно найти значение функции 𝑭(𝟕).
Далее подставляем полученные значения функции
в ранее полученные соотношения и получаем:
𝑭 𝟑 = 𝑭 𝟐 + 𝟐 × 𝑭 𝟏 = 𝟏 + 𝟐 × 𝟏 =3
𝑭 𝟒 = 𝑭 𝟑 + 𝟐 × 𝑭 𝟐 = 𝟑 + 𝟐 × 𝟏 =5
𝑭 𝟓 = 𝑭 𝟒 + 𝟐 × 𝑭 𝟑 = 𝟓 + 𝟐 × 𝟑 = 𝟏𝟏
𝑭 𝟔 = 𝑭 𝟓 + 𝟐 × 𝑭 𝟒 = 𝟏𝟏 + 𝟐 × 𝟓 = 𝟐𝟏
𝑭 𝟕 = 𝑭 𝟔 + 𝟐 × 𝑭 𝟓 = 𝟐𝟏 + 𝟐 × 𝟏𝟏 = 𝟒𝟑
Ответ: 43
ЗАДАЧА 30 (С САЙТА К.Ю.ПОЛЯКОВА)
РЕШЕНИЕ
Рекуррентные соотношения заданы:
Нужно найти значение величины 𝑭 𝟓 − 𝑮(𝟓).
n=5>2, подставляем во 2 и 3 соотношения и
получаем:
𝑭 𝟓 = 𝟑 ∗ 𝑭 𝟒 − 𝟑 ∗ 𝑮(𝟒)
𝑮 𝟓 = 𝑭 𝟒 + 𝟐 ∗ 𝑮(𝟒)
Далее аналогично получаем 𝑭 𝟒 и 𝑮 𝟒 :
𝑭 𝟒 = 𝟑 ∗ 𝑭 𝟑 − 𝟑 ∗ 𝑮(𝟑)
𝑮 𝟒 = 𝑭 𝟑 + 𝟐 ∗ 𝑮(𝟑)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения заданы:
Нужно найти значение величины 𝑭 𝟓 − 𝑮(𝟓).
Далее аналогично получаем 𝑭 𝟑 и 𝑮 𝟑 :
𝑭 𝟑 = 𝟑 ∗ 𝑭 𝟐 − 𝟑 ∗ 𝑮(𝟐)
𝑮 𝟑 = 𝑭 𝟐 + 𝟐 ∗ 𝑮(𝟐)
Далее аналогично получаем 𝑭 𝟐 и 𝑮 𝟐 :
𝑭 𝟐 =𝟑∗𝑭 𝟏 −𝟑∗𝑮 𝟏 =𝟑∗𝟏−𝟑∗𝟏=𝟎
𝑮 𝟐 =𝑭 𝟏 +𝟐∗𝑮 𝟏 =𝟏+𝟐∗𝟏=𝟑
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения заданы:
Нужно найти значение величины 𝑭 𝟓 − 𝑮(𝟓).
Далее подставляем значения функций 𝑭 𝟐 и 𝑮 𝟐 :
𝑭 𝟑 = 𝟑 ∗ 𝑭 𝟐 − 𝟑 ∗ 𝑮 𝟐 = 𝟑 ∗ 𝟎 − 𝟑 ∗ 𝟑 = −𝟗
𝑮 𝟑 =𝑭 𝟐 +𝟐∗𝑮 𝟐 =𝟎+𝟐∗𝟑=𝟔
Далее аналогично получаем значения ф-ий 𝑭 𝟒 и 𝑮 𝟒 :
𝑭 𝟒 = 𝟑 ∗ 𝑭 𝟑 − 𝟑 ∗ 𝑮 𝟑 = 𝟑 ∗ −𝟗 − 𝟑 ∗ 𝟔 = −𝟒𝟓
𝑮 𝟒 = 𝑭 𝟑 + 𝟐 ∗ 𝑮 𝟑 = −𝟗 + 𝟐 ∗ 𝟔 = 𝟑
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения заданы:
Нужно найти значение величины 𝑭 𝟓 − 𝑮(𝟓).
Далее аналогично получаем значения ф-ий
𝑭 𝟓 и𝑮 𝟓 :
𝑭 𝟓 = 𝟑 ∗ 𝑭 𝟒 − 𝟑 ∗ 𝑮 𝟒 = 𝟑 ∗ −𝟒𝟓 − 𝟑 ∗ 𝟑 = −144
𝑮 𝟓 = 𝑭 𝟒 + 𝟐 ∗ 𝑮 𝟒 = −𝟒𝟓 + 𝟐 ∗ 𝟑 = −𝟑𝟗
Находим значение величины
𝑭 𝟓 − 𝑮 𝟓 = −𝟏𝟒𝟒 − −𝟑𝟗 = −𝟏𝟎𝟓
Ответ: −𝟏𝟎𝟓.
ЗАДАЧИ НА ОТРАБОТКУ
№№ 1 – 29, 43, 58 – 59
ИСТОЧНИКИ ЗАДАЧ
Рекомендованные ФИПИ материалы
К.Ю. Полякова (http://kpolyakov.spb.ru)
ЗАДАЧА 62 (С САЙТА К . Ю. П ОЛЯКОВА )
Дан рекурсивный алгоритм:
function F(n: integer): integer;
begin
if n > 2 then
F := F(n - 1) + F(n - 2)
else
F := n;
end;
Чему будет равно значение, вычисленное
алгоритмом при выполнении вызова F(5)?
РЕШЕНИЕ
Сначала составим рекуррентные соотношения:
При 𝒏 > 𝟐 𝑭 𝒏 = 𝑭 𝒏 − 𝟏 + 𝑭 𝒏 − 𝟐 (1)
При 𝒏 ≤ 𝟐 𝑭 𝒏 = 𝒏
(2)
Нужно найти значение функции 𝑭 𝟓
Запишем формулу для 𝒏 = 𝟓 по формуле (𝟏):
𝑭 𝟓 =𝑭 𝟒 +𝑭 𝟑
Для 𝒏 = 𝟒:
𝑭 𝟒 =𝑭 𝟑 +𝑭 𝟐
Для 𝒏 = 𝟑:
𝑭 𝟑 = 𝑭 𝟐 + 𝑭(𝟏)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
При 𝒏 > 𝟐 𝑭 𝒏 = 𝑭 𝒏 − 𝟏 + 𝑭 𝒏 − 𝟐
При 𝒏 ≤ 𝟐 𝑭 𝒏 = 𝒏
(1)
(2)
По формуле (2) 𝑭 𝟐 = 𝟐, 𝑭 𝟏 = 𝟏
𝑭 𝟑 =𝑭 𝟐 +𝑭 𝟏 =𝟐+𝟏=𝟑
Подставляем значения функции F(3) и F(2):
𝑭 𝟒 =𝑭 𝟑 +𝑭 𝟐 =𝟑+𝟐=𝟓
Подставляем значения функции F(4) и F(3):
𝑭 𝟓 =𝑭 𝟒 +𝑭 𝟑 =𝟓+𝟑=𝟖
Ответ: 8
ЗАДАЧА 76 (С САЙТА К . Ю. П ОЛЯКОВА )
Ниже записаны две рекурсивные функции, F и G:
function F(n: integer): integer;
begin
if n > 2 then
F := F(n – 1) + G(n – 2)
else
F := 1;
end;
function G(n: integer): integer;
begin
if n > 2 then
G := G(n – 1) + F(n – 2)
else
G := 1;
end;
Чему будет равно значение, вычисленное при выполнении
вызова F(7)?
РЕШЕНИЕ
Сначала составим рекуррентные соотношения:
Для 𝑭 𝒏 :
при 𝒏 > 𝟐 𝑭 𝒏 = 𝑭 𝒏 − 𝟏 + 𝑮 𝒏 − 𝟐
при 𝒏 ≤ 𝟐 𝑭 𝒏 = 𝟏
Для 𝑮 𝒏 :
при 𝒏 > 𝟐 𝑮 𝒏 = 𝑮 𝒏 − 𝟏 + 𝑭 𝒏 − 𝟐
при 𝒏 ≤ 𝟐 𝑮 𝒏 = 𝟏
Чему будет равно значение, вычисленное при
выполнении вызова F(7)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
Чему будет равно значение, вычисленное при
выполнении вызова F(7)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
𝒏=𝟕: 𝑭 𝟕 = 𝑭 𝟔 +𝑮 𝟓
Чтобы найти F(7) , нужно найти F(6) и G(5)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
𝒏=𝟔: 𝑭 𝟔 = 𝑭 𝟓 +𝑮 𝟒
𝒏=𝟓: 𝑮 𝟓 = 𝑮 𝟒 +𝑭 𝟑
Чтобы найти F(6) , нужно найти F(6) и G(5)
Чтобы найти G(5) , нужно найти F(3) и G(4)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
𝒏=𝟓: 𝑭 𝟓 = 𝑭 𝟒 +𝑮 𝟑
𝒏=𝟒: 𝑮 𝟒 = 𝑮 𝟑 +𝑭 𝟐
Чтобы найти F(5) , нужно найти F(4) и G(3)
Чтобы найти G(4) , нужно найти G(3), а F(2)=1
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
𝒏=𝟒: 𝑭 𝟒 = 𝑭 𝟑 +𝑮 𝟐
𝒏=𝟑: 𝑮 𝟑 = 𝑮 𝟐 +𝑭 𝟏
𝑮 𝟐 = 𝟏; 𝑭 𝟏 = 𝟏
𝑮 𝟑 =𝑮 𝟐 +𝑭 𝟏 =𝟏+𝟏=𝟐
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
𝒏=𝟑: 𝑭 𝟑 = 𝑭 𝟐 +𝑮 𝟏
𝑭 𝟐 = 𝟏; 𝑮 𝟏 = 𝟏
𝑭 𝟑 =𝑭 𝟐 +𝑮 𝟏 =𝟏+𝟏=𝟐
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
Значения 𝑭 𝟑 = 𝟐; 𝑮 𝟐 = 𝟏 подставляем в
соотношение для 𝑭 𝟒 = 𝑭 𝟑 + 𝑮 𝟐 = 𝟐 + 𝟏 = 𝟑
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
Значения 𝑭 𝟒 = 𝟑; 𝑮 𝟑 = 𝟐 подставляем в
соотношения для
𝑭 𝟓 =𝑭 𝟒 +𝑮 𝟑 =𝟑+𝟐=𝟓
𝑮 𝟒 =𝑮 𝟑 +𝑭 𝟐 =𝟐+𝟏=𝟑
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
при 𝒏 > 𝟐
𝑭 𝒏 =𝑭 𝒏−𝟏 +𝑮 𝒏−𝟐
𝑮 𝒏 =𝑮 𝒏−𝟏 +𝑭 𝒏−𝟐
при 𝒏 ≤ 𝟐
𝑭 𝒏 = 𝟏; 𝑮 𝒏 = 𝟏
Значения 𝑭 𝟓 = 𝟓; 𝑮 𝟒 = 𝟑; 𝑭 𝟑 = 𝟐
подставляем в соотношения для
𝑭 𝟔 =𝑭 𝟓 +𝑮 𝟒 =𝟓+𝟑=𝟖
𝑮 𝟓 =𝑮 𝟒 +𝑭 𝟑 =𝟑+𝟐=𝟓
𝟕 = 𝑭 𝟔 + 𝑮 𝟓 = 𝟖 + 𝟓 = 𝟏𝟑
ЗАДАЧИ НА ОТРАБОТКУ
№№ 63 – 69, 74, 77
ИСТОЧНИКИ ЗАДАЧ
Рекомендованные ФИПИ материалы
К.Ю. Полякова (http://kpolyakov.spb.ru)
ЗАДАЧА 31 (С САЙТА К . Ю. П ОЛЯКОВА )
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n div 2);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(5)?
РЕШЕНИЕ
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n div 2);
F(n div 2);
end
end;
Сначала составим рекуррентные соотношения:
𝑭 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟐 + 𝟐 ∗ 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(5)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟐 + 𝟐 ∗ 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(5)?
𝑭 𝟓 = 𝟏 + 𝑭 𝟓 − 𝟐 + 𝟐 ∗ 𝑭 𝟓 𝒅𝒊𝒗 𝟐
= 𝟏 + 𝑭 𝟑 + 𝟐 ∗ 𝑭(𝟐)
Нужно найти 𝑭 𝟑 и 𝑭 𝟐
𝑭 𝟑 =𝟏+𝑭 𝟏 +𝟐∗𝑭 𝟏 =𝟏+𝟑∗𝑭 𝟏
𝑭 𝟐 =𝟏+𝑭 𝟎 +𝟐∗𝑭 𝟏
Далее нужно найти 𝑭 𝟏 и 𝑭(𝟎)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟐 + 𝟐 ∗ 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(5)?
Далее нужно найти 𝑭 𝟏 и 𝑭(𝟎)
𝑭 𝟏 = 𝟏 + 𝑭 −𝟏 + 𝟐 ∗ 𝑭 𝟎
𝑭 𝟎 = 𝟏 + 𝑭 −𝟐 + 𝟐 ∗ 𝑭 𝟎
Т.к. 𝑭 −𝟏 = 𝟏; 𝑭 𝟎 = 𝟏 и 𝑭 −𝟐 = 𝟏, то
𝑭 𝟏 = 𝟏 + 𝑭 −𝟏 + 𝟐 ∗ 𝑭 𝟎 = 𝟏 + 𝟏 + 𝟐 ∗ 𝟏 = 𝟒
Далее подставляем полученные значения в
соотношения для 𝑭 𝟐 , 𝑭 𝟑 и𝑭 𝟓
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟐 + 𝟐 ∗ 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(5)?
Далее подставляем полученные значения в
соотношения для 𝑭 𝟐 , 𝑭 𝟑 и𝑭 𝟓
𝑭 𝟐 = 𝟏 + 𝑭 𝟎 + 𝟐 ∗ 𝑭 𝟏 = 𝟏 + 𝟏 + 𝟐 ∗ 𝟒 = 𝟏𝟎
𝑭 𝟑 = 𝟏 + 𝟑 ∗ 𝑭 𝟏 = 𝟏 + 𝟑 ∗ 𝟒 = 𝟏𝟑
𝑭 𝟓 = 𝟏 + 𝑭 𝟑 + 𝟐 ∗ 𝑭 𝟐 = 𝟏 + 𝟏𝟑 + 𝟐 ∗ 𝟏𝟎 = 𝟑𝟒
Ответ: 34
ЗАДАЧА 36 (С САЙТА К . Ю. П ОЛЯКОВА )
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
writeln('*');
F(n-2);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(7)?
РЕШЕНИЕ
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
writeln('*');
F(n-2);
F(n div 2);
end
end;
Сначала составим рекуррентные соотношения:
𝑭 𝒏 = 𝟏 + 𝟏 + 𝑭 𝒏 − 𝟐 + 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(7)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 + 𝑭 𝒏 − 𝟐 + 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Чему будет равно значение, вычисленное при
выполнении вызова F(7)?
𝑭 𝟕 =𝟐+𝑭 𝟓 +𝑭 𝟑
Нужно найти 𝑭 𝟓 и 𝑭 𝟑
𝑭 𝟓 =𝟐+𝑭 𝟑 +𝑭 𝟐
𝑭 𝟑 = 𝟐 + 𝑭 𝟏 + 𝑭 𝟏 = 𝟐 + 𝟐 ∗ 𝑭(𝟏)
Далее нужно найти 𝑭 𝟐 и 𝑭(𝟏)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 + 𝑭 𝒏 − 𝟐 + 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Чему будет равно значение, вычисленное при
выполнении вызова F(7)?
Далее нужно найти 𝑭 𝟐 и 𝑭(𝟏)
𝑭 𝟐 =𝟐+𝑭 𝟎 +𝑭 𝟏
𝑭 𝟏 = 𝟐 + 𝑭 −𝟏 + 𝑭 𝟎
Т.к. 𝑭 −𝟏 = 𝟏; 𝑭 𝟎 = 𝟏,
то получаем значения 𝑭 𝟏 и 𝑭(𝟐):
𝑭 𝟏 = 𝟐 + 𝑭 −𝟏 + 𝑭 𝟎 = 𝟐 + 𝟏 + 𝟏 = 𝟒
𝑭 𝟐 =𝟐+𝑭 𝟎 +𝑭 𝟏 =𝟐+𝟏+𝟒=𝟕
Далее подставляем полученные значения в
соотношения для 𝑭 𝟑 , 𝑭 𝟓 и 𝑭 𝟕
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 + 𝑭 𝒏 − 𝟐 + 𝑭 𝒏 𝒅𝒊𝒗 𝟐 , при 𝒏 > 𝟎
𝑭 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Чему будет равно значение, вычисленное при
выполнении вызова F(7)?
Далее подставляем полученные значения в
соотношения для 𝑭 𝟑 , 𝑭 𝟓 и 𝑭 𝟕
𝑭 𝟑 = 𝟐 + 𝟐 ∗ 𝑭 𝟏 = 𝟐 + 𝟐 ∗ 𝟒 = 𝟏𝟎
𝑭 𝟓 = 𝟐 + 𝑭 𝟑 + 𝑭 𝟐 = 𝟐 + 𝟏𝟎 + 𝟕 = 𝟏𝟗
𝑭 𝟕 = 𝟐 + 𝑭 𝟓 + 𝑭 𝟑 = 𝟐 + 𝟏𝟗 + 𝟏𝟎 = 𝟑𝟏
Ответ: 31
ЗАДАЧА 11 (ИНФ_ДЕМО 2016)
РЕШЕНИЕ
procedure F(n: integer);
begin
if n > 0 then
begin
G(n–1)
end;
procedure G(n: integer);
begin
writeln('*');
if n > 1 then
begin
F(n–3)
end;
Сначала составим рекуррентные соотношения: 𝑭 𝒏 =
𝑮 𝒏 − 𝟏 , при 𝒏 > 𝟎; 𝑭 𝒏 = 𝟎, при 𝒏 ≤ 𝟎
𝑮 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟑 , при 𝒏 > 𝟏; 𝑮 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано на
экране при выполнении вызова F(11)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝑮 𝒏 − 𝟏 , при 𝒏 > 𝟎; 𝑭 𝒏 = 𝟎, при 𝒏 ≤ 𝟎
𝑮 𝒏 = 𝟏 + 𝑭 𝒏 − 𝟑 , при 𝒏 > 𝟏; 𝑮 𝒏 = 𝟏, при 𝒏 ≤ 𝟎
Сколько символов "звездочка" будет напечатано
на экране при выполнении вызова F(11)?
𝑭
𝑮
𝑭
𝑮
𝑭
𝑮
𝑭
𝟏𝟏 = 𝑮 𝟏𝟎
𝟏𝟎 = 𝟏 + 𝑭 𝟕
𝟕 =𝑮 𝟔
𝟔 =𝟏+𝑭 𝟑
𝟑 =𝑮 𝟐
𝟐 = 𝟏 + 𝑭 −𝟏
−𝟏 = 𝟎
𝑮
𝑭
𝑮
𝑭
𝑮
𝑭
𝟐 = 𝟏 + 𝑭 −𝟏 = 𝟏 + 𝟎 = 𝟏
𝟑 =𝑮 𝟐 =𝟏
𝟔 =𝟏+𝑭 𝟑 =𝟏+𝟏=𝟐
𝟕 =𝑮 𝟔 =𝟐
𝟏𝟎 = 𝟏 + 𝑭 𝟕 = 𝟏 + 𝟐 = 𝟑
𝟏𝟏 = 𝑮 𝟏𝟎 = 𝟑
Ответ: 3
ЗАДАЧИ НА ОТРАБОТКУ
№№ 32 – 35, 37 – 42, 70 – 73, 75
ИСТОЧНИКИ ЗАДАЧ
Рекомендованные ФИПИ материалы
К.Ю. Полякова (http://kpolyakov.spb.ru)
ЗАДАЧА 11 (ИНФ_ДЕМО 2015)
РЕШЕНИЕ
procedure F(n: integer);
begin
writeln(n);
if n < 5 then
begin
F(n + 1);
F(n + 3);
end
end;
Сначала составим рекуррентные соотношения:
𝑭 𝒏 = 𝒏 + 𝑭 𝒏 + 𝟏 + 𝑭 𝒏 + 𝟑 , при 𝒏 < 𝟓
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟓
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝒏 + 𝑭 𝒏 + 𝟏 + 𝑭 𝒏 + 𝟑 , при 𝒏 < 𝟓
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟓
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
𝑭 𝟏 = 𝟏 + 𝑭 𝟐 + 𝑭(𝟒)
Нужно найти 𝑭 𝟐 и 𝑭 𝟒
𝑭 𝟐 =𝟐+𝑭 𝟑 +𝑭 𝟓
𝑭 𝟒 =𝟒+𝑭 𝟓 +𝑭 𝟕
Т.к. при 𝒏 ≥ 𝟓 𝑭 𝒏 = 𝒏, то 𝑭 𝟓 = 𝟓; 𝑭 𝟕 = 𝟕
𝑭 𝟒 = 𝟒 + 𝑭 𝟓 + 𝑭 𝟕 = 𝟒 + 𝟓 + 𝟕 = 𝟏𝟔
Далее нужно найти 𝑭 𝟑 :
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝒏 + 𝑭 𝒏 + 𝟏 + 𝑭 𝒏 + 𝟑 , при 𝒏 < 𝟓
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟓
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
Далее нужно найти 𝑭 𝟑 :
𝑭 𝟑 = 𝟑 + 𝑭 𝟒 + 𝑭(𝟔)
𝑭 𝟒 = 𝟏𝟔
Т.к. при 𝒏 ≥ 𝟓 𝑭 𝒏 = 𝒏, то 𝑭 𝟔 = 𝟔
Подставляем значения 𝑭 𝟒 ; 𝑭(𝟔) и получаем:
𝑭 𝟑 = 𝟑 + 𝑭 𝟒 + 𝑭 𝟔 = 𝟑 + 𝟏𝟔 + 𝟔 = 𝟐𝟓
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝒏 + 𝑭 𝒏 + 𝟏 + 𝑭 𝒏 + 𝟑 , при 𝒏 < 𝟓
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟓
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
Подставляем значения 𝑭 𝟑 ; 𝑭(𝟓) и получаем:
𝑭 𝟐 = 𝟐 + 𝑭 𝟑 + 𝑭 𝟓 = 𝟐 + 𝟐𝟓 + 𝟓 = 𝟑𝟐
Подставляем значения 𝑭 𝟐 ; 𝑭(𝟒) и получаем:
𝑭 𝟏 = 𝟏 + 𝑭 𝟐 + 𝑭 𝟒 = 𝟏 + 𝟑𝟐 + 𝟏𝟔 = 𝟒𝟗
Ответ: 49
ЗАДАЧА 57 (С САЙТА К . Ю. П ОЛЯКОВА )
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln(n);
if n < 7 then begin
writeln(n);
F(n+2);
F(n*2);
F(n*3)
end
end;
Найдите сумму чисел, которые будут выведены
при вызове F(1).
РЕШЕНИЕ
procedure F(n: integer);
begin
writeln(n);
if n < 7 then begin
writeln(n);
F(n+2);
F(n*2);
F(n*3)
end
end;
Сначала составим рекуррентные соотношения: 𝑭 𝒏 =
𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑), 𝒏 < 𝟕
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑),
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
𝒏<𝟕
𝑭 𝟏 = 𝟐 + 𝑭 𝟑 + 𝑭 𝟐 + 𝑭 𝟑 = 𝟐 + 𝟐 ∗ 𝑭 𝟑 + 𝑭(𝟐)
Нужно найти 𝑭 𝟐 и 𝑭 𝟑
𝑭 𝟐 = 𝟒 + 𝑭 𝟒 + 𝑭 𝟒 + 𝑭 𝟔 = 𝟒 + 𝟐 ∗ 𝑭 𝟒 + 𝑭(𝟔)
𝑭 𝟑 = 𝟔 + 𝑭 𝟓 + 𝑭 𝟔 + 𝑭(𝟗)
Далее нужно найти 𝑭 𝟒 , 𝑭 𝟓 и 𝑭(𝟔):
𝑭 𝟒 = 𝟖 + 𝑭 𝟔 + 𝑭 𝟖 + 𝑭(𝟏𝟐)
𝑭 𝟓 = 𝟏𝟎 + 𝑭 𝟕 + 𝑭 𝟏𝟎 + 𝑭(𝟏𝟓)
𝑭 𝟔 = 𝟏𝟐 + 𝑭 𝟖 + 𝑭 𝟏𝟐 + 𝑭(𝟏𝟖)
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑),
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
Далее нужно найти 𝑭 𝟒 , 𝑭 𝟓 и 𝑭(𝟔):
𝑭 𝟒 = 𝟖 + 𝑭 𝟔 + 𝑭 𝟖 + 𝑭(𝟏𝟐)
𝑭 𝟓 = 𝟏𝟎 + 𝑭 𝟕 + 𝑭 𝟏𝟎 + 𝑭(𝟏𝟓)
𝑭 𝟔 = 𝟏𝟐 + 𝑭 𝟖 + 𝑭 𝟏𝟐 + 𝑭 𝟏𝟖
Т.к. при 𝒏 ≥ 𝟕 𝑭 𝒏 = 𝒏,
то 𝑭 𝟖 = 𝟖; 𝑭 𝟏𝟐 = 𝟏𝟐; 𝑭 𝟏𝟖 = 𝟏𝟖
𝑭 𝟔 = 𝟏𝟐 + 𝑭 𝟖 + 𝑭 𝟏𝟐 + 𝑭 𝟏𝟖 =
= 𝟏𝟐 + 𝟖 + 𝟏𝟐 + 𝟏𝟖 = 𝟓𝟎
𝒏<𝟕
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑),
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
𝒏<𝟕
Далее нужно найти 𝑭 𝟓 :
𝑭 𝟓 = 𝟏𝟎 + 𝑭 𝟕 + 𝑭 𝟏𝟎 + 𝑭(𝟏𝟓)
Т.к. при 𝒏 ≥ 𝟕 𝑭 𝒏 = 𝒏, то
𝑭 𝟕 = 𝟕; 𝑭 𝟏𝟎 = 𝟏𝟎; 𝑭 𝟏𝟓 = 𝟏𝟓
Подставляем значения 𝑭 𝟕 ; 𝑭 𝟏𝟎 ; 𝑭(𝟏𝟓) и получаем:
𝑭 𝟓 = 𝟏𝟎 + 𝑭 𝟕 + 𝑭 𝟏𝟎 + 𝑭 𝟏𝟓 = 𝟏𝟎 + 𝟕 + 𝟏𝟎 + 𝟏𝟓 = 𝟒𝟐
Далее нужно найти 𝑭 𝟒 :
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑),
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
𝒏<𝟕
Далее нужно найти 𝑭 𝟒 :
𝑭 𝟒 = 𝟖 + 𝑭 𝟔 + 𝑭 𝟖 + 𝑭 𝟏𝟐 = 𝟖 + 𝟓𝟎 + 𝟖 + 𝟏𝟐 = 𝟕𝟖
Подставляем полученные значения
𝑭 𝟓 = 𝟒𝟐; 𝑭 𝟔 = 𝟓𝟎
𝑭 𝟗 = 𝟗, т. к. при 𝒏 ≥ 𝟕 𝑭 𝒏 = 𝒏
получаем:
𝑭 𝟑 = 𝟔 + 𝑭 𝟓 + 𝑭 𝟔 + 𝑭 𝟗 = 𝟔 + 𝟒𝟐 + 𝟓𝟎 + 𝟗 = 𝟏𝟎𝟕
Далее подставляем полученные значения 𝑭 𝟒 ; 𝑭 𝟔 и
получаем значение 𝑭 𝟐
ПРОДОЛЖЕНИЕ РЕШЕНИЯ
Рекуррентные соотношения:
𝑭 𝒏 = 𝟐 ∗ 𝒏 + 𝑭 𝒏 + 𝟐 + 𝑭 𝒏 ∗ 𝟐 + 𝑭(𝒏 ∗ 𝟑),
𝑭 𝒏 = 𝒏, при 𝒏 ≥ 𝟕
Чему будет равно значение, вычисленное при
выполнении вызова F(1)?
𝒏<𝟕
Далее подставляем полученные значения 𝑭 𝟒 ; 𝑭 𝟔 и
получаем значение 𝑭 𝟐 :
𝑭 𝟐 = 𝟒 + 𝟐 ∗ 𝑭 𝟒 + 𝑭 𝟔 = 𝟒 + 𝟐 ∗ 𝟕𝟖 + 𝟓𝟎 = 𝟐𝟏𝟎
Далее подставляем полученные значения 𝑭 𝟑 ; 𝑭𝟐и
получаем значение 𝑭 𝟏 :
𝑭 𝟏 = 𝟐 + 𝟐 ∗ 𝑭 𝟑 + 𝑭 𝟐 = 𝟐 + 𝟐 ∗ 𝟏𝟎𝟕 + 𝟐𝟏𝟎 = 𝟒𝟐𝟔
Ответ: 426
ЗАДАЧИ НА ОТРАБОТКУ
№№ 44 – 56, 60, 61
ИСТОЧНИКИ ЗАДАЧ
Рекомендованные ФИПИ материалы
К.Ю. Полякова (http://kpolyakov.spb.ru)
Download