РАЗБОР ЗАДАЧ ЕГЭ ПО ТЕМЕ «РЕКУРСИВНЫЕ АЛГОРИТМЫ» ДОПОЛНЕНИЕ Учитель информатики ГБОУ «Школа №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)