«Весна — лето 2024»

Реализация рекурсивных алгоритмов на языке программирования Python 3.xx

Данная презентация поможет Вам легко и просто растолковать понятие рекурсии, а так же её прмиенение при решении задач.

Олимпиады: Информатика 1 - 11 классы

Содержимое разработки

Выполнил Багаев Александр Валерьевич, г. Саратов

Выполнил Багаев Александр Валерьевич, г. Саратов

Рекурсивные Процедуры и Функции

Рекурсивные Процедуры и Функции

Рекурсия Рекурсия — это способ определения множества объектов через само это множество на основе заданных простых базовых случаев. ИЛИ Рекурсия – программа или функция является рекурсивной если она вызывает сама себя при условии, что существует какое-то условие, которое останавливает рекурсию. (Иначе это приведет к вечной рекурсии и бесконечному циклу)

Рекурсия

Рекурсия — это способ определения множества объектов через само это множество на основе заданных простых базовых случаев.

ИЛИ

Рекурсия – программа или функция является рекурсивной если она вызывает сама себя при условии, что существует какое-то условие, которое останавливает рекурсию. (Иначе это приведет к вечной рекурсии и бесконечному циклу)

Правило создания рекурсии Пример def Rec(x):  if x==0:  return 1  else:  Rec(x-1)  print(x) Rec(3)

Правило создания рекурсии

Пример

def Rec(x):

if x==0:

return 1

else:

Rec(x-1)

print(x)

Rec(3)

Примеры рекурсии

Примеры рекурсии

  • Круговая
  • Звезда Коха
  • Дерево
  • Фрактал
Фракталы

Фракталы

  • Во всех детерминированных фракталах, само-подобие проявляется на всех уровнях. Это значит, что независимо от того насколько вы приближаете фрактал, вы увидите все тот же узор. Для сложных фракталов, которые будут рассмотрены позже, это не так.
ФРАКТАЛ СЕРПИНСКОГО   В этом фрактале, инициатор и генератор одинаковы. При каждой итерации, добавляется уменьшенная копия инициатора к каждому углу генератора и так далее. Если при создании этого фрактала произвести бесконечное число итераций, он бы занял всю плоскость, не оставив ни одной дырочки. Поэтому его фрактальная размерность ln9/ln3 = 2.0

ФРАКТАЛ СЕРПИНСКОГО

В этом фрактале, инициатор и генератор одинаковы. При каждой итерации, добавляется уменьшенная копия инициатора к каждому углу генератора и так далее. Если при создании этого фрактала произвести бесконечное число итераций, он бы занял всю плоскость, не оставив ни одной дырочки. Поэтому его фрактальная размерность ln9/ln3 = 2.0

КРИВАЯ КОХА

КРИВАЯ КОХА

  • Она была изобретена в девятнадцатом веке немецким математиком по имени Хельге фон Кох, который, изучая работы Георга Контора и Карла Вейерштрассе, натолкнулся на описания некоторых странных кривых с необычным поведением. Инициатор — прямая линия. Генератор — равносторонний треугольник, стороны которого равны трети длины большего отрезка. Эти треугольники добавляются к середине каждого сегмента снова и снова.
ФРАКТАЛЫ ЗВЕЗДА И СНЕЖИНКА

ФРАКТАЛЫ ЗВЕЗДА И СНЕЖИНКА

  • Оба эти объекта не являются классическими фракталами, и они не были изобретены Мандельбротом или кем-либо из известных математиков. Эти фракталы были созданы из интереса, чтобы поэкспериментировать в программировании. И инициатор и генератор здесь фигура, сформированная соединением средних точек сторон со средними точками противолежащих сторон в правильном шестиугольнике.
Задача 1

Задача 1

  • Напишите рекурсивную программу для вычисления факториала заданного числа N.
Задача 2 Напишите программу, которая бы выводила последовательность Фибоначчи до заданного числа. Замечание:  При работе с рекурсивными функциями можно легко превысить глубину допустимой в Python рекурсии. Для настройки глубины рекурсии следует использовать функцию setrecursionlimit(N)из модуля sys, установив требуемое значение N. .

Задача 2

  • Напишите программу, которая бы выводила последовательность Фибоначчи до заданного числа.

Замечание:

При работе с рекурсивными функциями можно легко превысить глубину допустимой в Python рекурсии. Для настройки глубины рекурсии следует использовать функцию setrecursionlimit(N)из модуля sys, установив требуемое значение N.

.

Задача 3 Напишите программу, которая печатает следующий рисунок с помощью рекурсии: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Задача 3

  • Напишите программу, которая печатает следующий рисунок с помощью рекурсии:

*

* *

* * *

* * * *

* * * * *

* * * * * *

* * * * * * *

* * * * * * * *

Графические библиотеки

Графические библиотеки

  • Tkinter
  • Pygame
  • Pythonwin
  • PythonCard
  • Turtle
ЧЕРЕПАШКА Команды рисования:  down() #опустить курсор для рисования  up() #поднять курсор  width(n) #ширина следа курсора в n пикселей  сolor(s) #где s #цвет рисования курсора   Команды для перемещения курсора:  forward(n) #вперед на n пикселей  backward(n) #назад на n пикселей  left(n) #влево на n градусов  right(n) #вправо на n градусов   Дополнительно: Import turtle #подключение библиотеки reset() #очищается экран, возвращает курсор  mainloop() #задержка окна  speed(speed) #Установить скорость черепашки. speed должно быть от 1 (медленно) до 10 (быстро), или 0 (мгновенно);

ЧЕРЕПАШКА

Команды рисования: down() #опустить курсор для рисования up() #поднять курсор width(n) #ширина следа курсора в n пикселей сolor(s) #где s #цвет рисования курсора

  • Команды для перемещения курсора: forward(n) #вперед на n пикселей backward(n) #назад на n пикселей left(n) #влево на n градусов right(n) #вправо на n градусов

Дополнительно:

Import turtle #подключение библиотеки

reset() #очищается экран, возвращает курсор mainloop() #задержка окна speed(speed) #Установить скорость черепашки. speed должно быть от 1 (медленно) до 10 (быстро), или 0 (мгновенно);

Тренинг

Тренинг

  • Потренируйтесь с командами черепашки, разберитесь с ними и попробуйте создать примитивные фигуры
Задача 5

Задача 5

  • Попробуйте воссоздать рисунок:
Домашнее задание Закрепить материал дома на тему «рекурсия» Задача: Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.

Домашнее задание

  • Закрепить материал дома на тему «рекурсия»
  • Задача: Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками.

При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки


Серия олимпиад «Весна — лето 2024»



Комплекты учителю



Качественные видеоуроки, тесты и практикумы для вашей удобной работы

Подробнее

Вебинары для учителей



Бесплатное участие и возможность получить свидетельство об участии в вебинаре.


Подробнее