СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Презентация "Динамическое программирование: вычисление рекурсивных функций" (11 класс углубленный уровень)

Категория: Информатика

Нажмите, чтобы узнать подробности

Презентация "ДДинамическое программирование: вычисление рекурсивных функций" (11 класс углубленный уровень) содержит алгоритмы решения задач на вычисление рекурсивных функций

Просмотр содержимого документа
«Презентация "Динамическое программирование: вычисление рекурсивных функций" (11 класс углубленный уровень)»

Динамическое программирование  (вычисление рекурсивных функций) Болгова Н.А. МБОУ СОШ с УИОП с.Тербуны Тербунского муниципального района Липецкой области

Динамическое программирование (вычисление рекурсивных функций)

Болгова Н.А.

МБОУ СОШ с УИОП с.Тербуны

Тербунского муниципального района Липецкой области

Определение: Динамическое программирование  – это способ решения сложных задач путем сведения их к более простым задачам того же типа. Рекурсия — это функция, которая вызывает саму себя.

Определение:

Динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа.

Рекурсия — это функция, которая вызывает саму себя.

Процедура(подпрограмма)  в Python  def имя(переменные):  локальные переменные (внутри процедуры)  return  основная программа: глобальные переменные (основная + процедура)

Процедура(подпрограмма) в Python

def имя(переменные):

локальные переменные

(внутри процедуры)

return

основная программа:

глобальные переменные

(основная + процедура)

1 Составьте рекурсию для вычисления функции F(7) и найдите ее значение. 1- алгоритм или дерево 2- программа в Python " width="640"

Задача № 16 (ЕГЭ, П, 5 мин)

F ( n ) = 1 при n 1

F ( n ) = n + 1 + F ( n– 1), при n 1

Составьте рекурсию для вычисления функции F(7) и найдите ее значение.

1- алгоритм или дерево

2- программа в Python

1 F(7) = 7 + 1 + F(6) F(6) = 6 + 1 + F(5) F(5) = 5 + 1 + F(4) F(4) = 4 + 1 + F(3) F(3) = 3 + 1 + F(2) F(2) = 2 + 1 + F(1) F(7) = 8 + 26 = 34 F(6) = 7 + 19 = 26 F(5) = 6 + 13 = 19 F(4) = 5 + 8 = 13 F(3) = 4 + 4 = 8 F(2) = 3 + 1 = 4 Ответ: 34 " width="640"

Алгоритм работы рекурсии: F ( n ) = n + 1 + F ( n– 1), при n 1

F(7) = 7 + 1 + F(6)

F(6) = 6 + 1 + F(5)

F(5) = 5 + 1 + F(4)

F(4) = 4 + 1 + F(3)

F(3) = 3 + 1 + F(2)

F(2) = 2 + 1 + F(1)

F(7) = 8 + 26 = 34

F(6) = 7 + 19 = 26

F(5) = 6 + 13 = 19

F(4) = 5 + 8 = 13

F(3) = 4 + 4 = 8

F(2) = 3 + 1 = 4

Ответ: 34

Программа:

Программа:

увеличивается время обработки " width="640"

Библиотеки Python:

import sys sys.setrecursionlimit(1000000)

from functools import lru_cache

@lru_cache(число) – в памяти хранятся числа, но не в рекурсии- увеличивается время обработки

1: return x * f(x - 1) print(f(2023) / f(2020)) " width="640"

№ 16-1

def f(x): if x == 1: return 1 if x 1: return x * f(x - 1) print(f(2023) / f(2020))

1: return x * f(x - 1) for x in range(20,2020): f(x) print(f(2023) / f(2020)) " width="640"

from functools import lru_cache @lru_cache(1000) def f(x): if x == 1: return 1 if x 1: return x * f(x - 1)

for x in range(20,2020): f(x) print(f(2023) / f(2020))

import sys  sys.setrecursionlimit(1000000)   def f(x):   return 2 * (g(x - 3) + 8)   def g(x):   if x return 2 * x   else :   return g(x - 2) + 1   print(f(15548))

import sys sys.setrecursionlimit(1000000) def f(x): return 2 * (g(x - 3) + 8) def g(x): if x return 2 * x else : return g(x - 2) + 1 print(f(15548))

№ 67 ( Е. Джобс ) Алгоритм вычисления функции F ( n ), где n – натуральное число, задан следующими соотношениями: F ( n ) = n + 1 при n F ( n ) = n + 2* F ( n + 2), когда n ≥ 3 и четно, F ( n ) = F ( n – 2) + n – 2, когда n ≥ 3 и нечетно. Сколько существует чисел n , для которых значение F ( n ) определено и будет трехзначным?

№ 67

( Е. Джобс ) Алгоритм вычисления функции F ( n ), где n – натуральное число, задан следующими соотношениями:

F ( n ) = n + 1 при n

F ( n ) = n + 2* F ( n + 2), когда n ≥ 3 и четно,

F ( n ) = F ( n – 2) + n – 2, когда n ≥ 3 и нечетно.

Сколько существует чисел n , для которых значение F ( n ) определено и будет трехзначным?

1 вариант

1 вариант

2 вариант Ручное решение

2 вариант

Ручное решение

3: break print(k) " width="640"

k = 0 for n in range(1, 10001, 2): a_n = str(f(n)) if len(a_n) == 3: k += 1 if len(a_n) 3: break print(k)

1 Найти  (F(2024) + 2 × F(2023)) / F(2022) 2) F(n)=n при n 2024; F(n)=n × F(n+1), если n ≤ 2024. Найти  F(2022) / F(2024) " width="640"

Практика ( файлы 16-1фипи, 16-2фипи

1) F(n)=1 при n = 1;

F(n)=(n−1) × F(n−1), если n 1

Найти  (F(2024) + 2 × F(2023)) / F(2022)

2) F(n)=n при n 2024; F(n)=n × F(n+1), если n ≤ 2024.

Найти  F(2022) / F(2024)

файл 16-3джобс

файл 16-3джобс

Литература: Поляков К.Ю., Еремин Е.А. «Информатика 10 класс (базовый и углубленный уровни)»- Москва, Бином, 2018) informatics.mccme.ru Питон тьютор Python 3.7

Литература:

  • Поляков К.Ю., Еремин Е.А. «Информатика 10 класс (базовый и углубленный уровни)»- Москва, Бином, 2018)
  • informatics.mccme.ru
  • Питон тьютор
  • Python 3.7