Рекурсия (RECURCIО возвращение). Цели урока Продолжим изучение подпрограмм. Узнаем, что такое рекурсия, как выполняется рекурсивный алгоритм.

Презентация:



Advertisements
Похожие презентации
Рекурсия (RECURCIО возвращение). Цели урока Продолжим изучение подпрограмм. Узнаем, что такое рекурсия, как выполняется рекурсивный алгоритм.
Advertisements

РЕКУРСИЯ РЕКУРРЕНТНЫЕ СООТНОШЕНИЯ У попа была собака - он ее любил. Она съела кусок мяса - он ее убил. Вырыл ямку - закопал, Взял дощечку – написал: У.
Перестановки и факториалы Фамилии авторов Яковлева О.Е Егорова Е.Н
1 Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Тема урока. «Рекурсивные алгоритмы» Словарик: Самоподобный объект Рекурсия Фрактал Кто вечно хнычет И скучает, Тот ничего Не замечает. Кто ничего Не замечает,
Программирование Задания В2, В5. Оператор присваивания в языке программирования Задание В2 – базовый уровень, время – 2 мин.
Процедуры и функции Вспомогательные алгоритмы (подпрограммы) создаются тогда, когда возникает необходимость в многократном использовании одного и того.
Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Рекурсия в ПРОЛОГе Понятие рекурсии Примеры рекурсивных объектов Рекурсивные правила в ПРОЛОГе Примеры рекурсивных правил Вычисление факториала Последовательность.
Подпрограммы Лекция 7. Ломаско Павел Сергеевич16 декабря 2013 г.
Рекурсия Учитель информатики Дружковской общеобразоватьльной школы І-ІІІ ступеней 17 Фёдорова Татьяна Викторовна.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ Паскаль НАЧАЛА ПРОГРАММИРОВАНИЯ.
Подпрограммы в Паскале.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Подпрограммы. Функции и процедуры. Кулебякин В.В.
Рекурсивные алгоритмы Домашнее задание. ДЕМО 2015 Подготовиться к самостоятельной работе (6.1, 6.2, 8, 11)
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм.
Транксрипт:

Рекурсия (RECURCIО возвращение)

Цели урока Продолжим изучение подпрограмм. Узнаем, что такое рекурсия, как выполняется рекурсивный алгоритм.

Что такое подпрограмма? подпрограмма это специальным образом оформленный алгоритм, который может многократно использоваться при решении более общей задачи.

Что такое формальные и фактические параметры? Формальные – условные обозначения в описании процедуры – описываются в ее заголовке. Фактические – с которыми требуется выполнить процедуру – перечисляются при вызове процедуры.

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

К чему относится описание типа в конце заголовка подпрограммы функции? Это описание относится к имени функции, которому необходимо присвоить значение результата.

Что такое рекурсивный объект и каковы его свойства Если поставить два зеркала напротив друг друга и между ними поместить предмет, то получится бесконечное множество отображений, причем каждое из них содержит свое собственное отображение. Любое из этих изображений можно рассматривать как рекурсивный объект, который частично состоит или определяется с помощью самого себя.

Треугольник Серпинского Берётся сплошной равносторонний треугольник, на первом шаге из центра удаляется внутренность срединного треугольника. На втором шаге удаляется три срединных треугольника из трёх оставшихся треугольников и т. д. После бесконечного повторения этой процедуры, от сплошного треугольника остаётся подмножество треугольник Серпинского.срединного треугольника

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

Юмор Большая часть всех шуток о рекурсии касается бесконечной рекурсии, в которой нет условия выхода. «Чтобы понять рекурсию, нужно сначала понять рекурсию» или «Чтобы что-то сделать, надо что-то сделать».

Несколько рассказов Станислава Лема посвящены (возможным) казусам при бесконечной рекурсии: Рассказ про Йона Тихого «Путешествие четырнадцатое» из «Звёздных дневников Йона Тихого», в котором герой последовательно переходит от статьи о сепульках к статье о сепуляции, оттуда к статье о сепулькариях, в которой снова стоит отсылка к статье «сепульки».

Рассказ о разумной машине, которая обладала достаточным умом и ленью, чтобы для решения поставленной задачи построить себе подобную, и поручить решение ей (итогом стала бесконечная рекурсия, когда каждая новая машина строила себе подобную и передавала задание ей).

Русская народная сказка-песня «У попа была собака…» являет пример рекурсии: У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал: "У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал: …

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

Примеры рекурсивного определения в математике. 1) Определение натурального числа. а) 1 - натуральное число; б) число, следующее за натуральным (т.е. больше его на единицу), есть натуральное число. 2) Арифметическая прогрессия: а)а 1 =а 0 ; б) а n =а n-1 +d. При а 0 =1, d=1 имеем натуральный ряд 1,2,3,... 3) Геометрическая прогрессия: а) а 1 =а 0 ; б) а n =а n-1 *q. При а 0 =2, q=2 имеем степенной ряд 2,4,8,16,32,...;

4) Факториал a n =n! (Fасtоr сомножитель) n!=1*2*3*4*5*б*...*n. а)а 1 =1; б) а n =n*а n-1. 5) Числа Фибоначчи. Они определяются следующим образом: x[1]=x[2]=1 x[n]=x[n-1]+x[n-2] при n > 2 Каждый элемент ряда Фибоначчи является суммой двух предшествующих элементов, т.е. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 …

Леонардо Фибоначчи (Пизанский), годы жизни В «Книге абака» 1202 г. изложил формулы решения квадратного уравнения по образцу ал-Хорезми, в этой книге впервые встречается правило для нахождения суммы членов произвольной арифметической прогрессии. Фибоначчи придумал последовательность натуральных чисел : а) если n

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

Вывод: мощность рекурсивного определения заключается в том, что оно позволяет с помощью конечного высказывания определить бесконечное множество объектов. Как и цикл, рекурсивное определение содержит повторения, но каждый раз при этом используются новые данные, т е повторение не является явным.

Что такое рекурсия. Рекурсия это способ описания функции или процессов через самих себя. Процесс может быть описан некоторым алгоритмом, называемым в данном случае рекурсивным. В таких алгоритмах выделяется два этапа: 1) «погружение» алгоритма в себя, т.е. применениё определения в «обратную сторону», пока не будет найдено начальное определение, не являющееся рекурсивным; 2) последовательное построение от начального определения до определения с введенным в алгоритм значением.

4 Примеры рекурсивных алгоритмов. Функция для вычисления факториала: Function F(n: integer): longin; Веgin If n=1 then F:=1 else:=n*F(n-1) End;

Рассмотрим последовательность вызовов этой функции для n=5. 1 вызов (n=5) у:=F(5), так как n1, то управление передается на ветку иначе и функция F:=5*F(4). 2 вызов (n=4), так как n 1, то F:=4*F(3). З вызов (n=З), так как n 1, то F:=3*F(2). 4 вызов (n=2), так как n 1, то F:=2*F(1)=2*1=2.. Function F(n: integer): longin; Веgin If n=1 then F:=1 else:=n*F(n-1) End;

Возвращаемся назад поднимаясь вверх по цепочке рекурсивных вызовов. Ответ: 5!=120 Это значение присваивается переменной. 1 вызов (n=5), то F:=5*F(4)=5*24= вызов (n=4), то F:=4*F(3)=4*6=24. 3 вызов (n=3), то F:=3*F(2)=З*2=6.

Begin {основная программа} Write(n=); Readln(n); Writeln(fib(,n,)=, fib(n):10:0); End. Function fib(x: integer):real; Begin If x

Введите и исполните программы вычисления чисел Фибоначчи. Вычислите 8-е число Фибоначчи Ответ. 21

Сколько раз вызывается функция Fib при n=8?

Вывод. Подпрограммы функции, делают программу, более наглядной, но рекурсивный вызов функции иногда существенно замедляет работу программы.