Transcript
Page 1: Рекурсивные алгоритмы

Тема урока. «Рекурсивные алгоритмы»

Словарик:

Самоподобный объект

Рекурсия Фрактал

Кто вечно хнычетИ скучает,Тот ничего Не замечает.Кто ничегоНе замечает,Тот ничегоНе изучает.Кто ничегоНе изучает,Тот вечно хнычетИ скучает.

Page 2: Рекурсивные алгоритмы

Сегодня на уроке Цель урока:

Повторение понятия рекурсии.

Повторение понятия фрактала и фрактальной геометрии

построение фрактала с помощью рекурсивного алгоритма.

Повторение графических возможностей среды быстрой разработки программ Pascal_ABC_Net

Пример самоподобной геометрической фигуры

Page 3: Рекурсивные алгоритмы

Повторение рекурсии

Рекурсия — это … процесс повторения элементов самоподобным образом.

Самоподобный объект — это объект, … в точности или приближённо совпадающий с частью себя самого

(то есть целое имеет ту же форму, что и одна или более частей).

Шли Из Африки В Саратов Семь Отчаянных Пиратов Не дошли До Душанбе - Видят надпись на столбе:"Шли Из АфрикиВ Саратов..." (По Б.Заходеру. Рекурсия.)

ПРИМЕРЫ:

Приведите свои примеры

рекурсии: - из литературы

- из физики- из химии

Приведите свои примеры

рекурсии: - из литературы

- из физики- из химии

Page 4: Рекурсивные алгоритмы

Примеры рекурсииКакие из предложенных объектов являются рекурсией, а какие - нет

Какие из предложенных объектов являются рекурсией, а какие - нет

Шёл по пустыне караван,Два ишака один баран.Вам эту песню не понять,И я начну её опять. Шел по пустыне караван…

Page 5: Рекурсивные алгоритмы

Рекурсивный алгоритм В программировании рекурсия — вызов функции (процедуры) из неё

же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия).

Например, функция A вызывает функцию B, а функция B —

функцию A.

Количество вложенных вызовов функции называется глубиной рекурсии.

Page 6: Рекурсивные алгоритмы

Алгоритм, использующий рекурсию1. Нарисовать

окружность радиуса R с центром в точке (X,Y)

2. Нарисовать окружности радиусом R/2 с новыми координатами:

(X+R; Y), (X; Y+R), (X-R; Y), (X; Y-R)

3. Для каждой из 4-х окружностей повторить п. 2 Глубина рекурсии

алгоритма равна 3

(X,Y)

Y

(Y-R)

(X+R)(X-R) X

(Y+R)

Page 7: Рекурсивные алгоритмы

Рекурсивный алгоритм

Какова глубина

рекурсии на

картинке?

Какова глубина

рекурсии на

картинке?

Page 8: Рекурсивные алгоритмы

Пример программы с рекурсией (факториал)

1. Program Rekurcia;2. var 3. f: longint;4. n: integer;5. function factorial(n: integer):longint;6. begin 7. if (n=0) or (n=1) then factorial:=18. else factorial:= factorial(n-1)*n;9. end;10. begin11. write(‘n=’); readln(n);12. f:=factorial(n);13. writeln (n,’! = ‘, f);14. readln;15. end.

В какой строке программы

содержится:1. Вызов функции?

2. Рекурсия?

В какой строке программы

содержится:1. Вызов функции?

2. Рекурсия?

n!=1, если n<=1,

(n-1)!·n, если n>1

Page 9: Рекурсивные алгоритмы

Как работает рекурсия в Паскале?

Подставьте слова в текст

Подставьте слова в текст

. . . процедуры ничем не отличается от . . . другой процедуры.

Что происходит, если одна процедура вызывает другую:

• в памяти размещаются . . ., передаваемые процедуре

• в другом месте памяти сохраняются . . . внутренних переменных вызывающей процедуры;

• запоминается . . . возврата в вызывающую процедуру;

• . . . передается вызванной процедуре.

Если процедуру вызвать из нее самой, то будет выполняться тот же код, но работать он будет с другими значениями параметров.

самовызов

вызова

параметры

значения

адрес

управление

Page 10: Рекурсивные алгоритмы

Фрактал и фрактальная геометрияОпределение фрактала:

Фрактал (лат. fractus — дробленый, состоящий из фрагментов)

— термин, означающий геометрическую фигуру, обладающую свойством самоподобия, то есть составленную из нескольких частей, каждая из которых подобна всей фигуре целиком.

Какую связь Вы заметили

между фракталом и рекурсией?

Какую связь Вы заметили

между фракталом и рекурсией?

Page 11: Рекурсивные алгоритмы

Примеры рекурсивных алгоритмов на ПаскалеКак на практике

использовать полученные теоретические знания?

Попробуем применить рекурсивный алгоритм, чтобы из примитивного геометрического объекта получить объект, похожий на реальный природный.

Эти объекты будут состоять из фрагментов, которые подобны самой фигуре (такие объекты как раз и называют фракталами).

Можно ли применить

рекурсивный алгоритм для

создания геометрических

фракталов?

Можно ли применить

рекурсивный алгоритм для

создания геометрических

фракталов?

Программа на PascalABC

Page 12: Рекурсивные алгоритмы

Что надо изменить в алгоритме, чтобы:1. дерево рисовалось не

слева направо, а наоборот?

2. увеличилась (уменьшилась) высота дерева?

3. увеличить количество веток?

4. наклонить дерево влево (вправо)?

x, y - координаты начала линии alfa - угол наклона линииm - начальная длина линииv - количество ветвлений

Page 13: Рекурсивные алгоритмы

Самое главное на уроке:Вспомним вопрос, который был задан в

начале урока:

как применение рекурсивных алгоритмов обогащает наш инструментарий программиста

как они влияют на компактность, логичность и простоту восприятия алгоритма.

Page 14: Рекурсивные алгоритмы

Самое главное на уроке:Итак, давайте проанализируем нашу с вами

совместную деятельность на уроке. О каких понятиях вы сегодня впервые

услышали ? Какие дополнительные знания вы получили об

уже знакомых вам понятиях (факториал)? Какое практическое применение имеют

полученные вами знания? Назовите учебные предметы, где можно

использовать знания о рекурсии и рекурсивных алгоритмах?

Page 15: Рекурсивные алгоритмы

Спасибо за внимание!


Recommended