Рекурсия в ПРОЛОГе

17
Рекурсия в ПРОЛОГе Понятие рекурсии Примеры рекурсивных объектов Рекурсивные правила в ПРОЛОГе Примеры рекурсивных правил Вычисление факториала Последовательность Фибоначчи Задача о Ханойских башнях

Upload: kolina

Post on 15-Jan-2016

61 views

Category:

Documents


0 download

DESCRIPTION

Рекурсия в ПРОЛОГе. Понятие рекурсии Примеры рекурсивных объектов Рекурсивные правила в ПРОЛОГе Примеры рекурсивных правил Вычисление факториала Последовательность Фибоначчи Задача о Ханойских башнях. Понятие рекурсии. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Рекурсия в ПРОЛОГе

Рекурсия в ПРОЛОГе

Понятие рекурсииПримеры рекурсивных объектов

Рекурсивные правила в ПРОЛОГеПримеры рекурсивных правил

Вычисление факториалаПоследовательность Фибоначчи

Задача о Ханойских башнях

Page 2: Рекурсия в ПРОЛОГе

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

• Рекурсия — способ организации действий, при котором процесс обращается сам к себе.

• Рекурсивным называется любой объект, который частично определяется через себя.

Page 3: Рекурсия в ПРОЛОГе

Рекурсия  в художественных образах

клип

Гравюра голландского художника Мориса Эшера "Рисующие руки"

Page 4: Рекурсия в ПРОЛОГе

ПРИМЕРЫ РЕКУРСИИ

У попа была собака, он её любил,Она съела кусок мяса, он её убил,В землю закопал,Надпись написал:

"У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал:

"У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал:

Page 5: Рекурсия в ПРОЛОГе

Рекурсия в природе

Page 6: Рекурсия в ПРОЛОГе

Рекурсия в математике: Треугольник Серпиньского

фрактал, один из двумерных аналогов множества Кантора предложенный польским математиком В. Серпиньским в 1915 году. Также известен как «решётка» или «салфетка» Серпиньского.

Page 7: Рекурсия в ПРОЛОГе

Рекурсия в математике:

Снежинка Коха

Page 8: Рекурсия в ПРОЛОГе

Рекурсия в математике: Алгебраические фракталы

Множество Мандельброта . Алгоритм построения основан на простом итеративном выражении: Z[i+1]

= Z[i] * Z[i] + C, где Zi и C - комплексные переменные. Итерации выполняются для каждой стартовой точки C прямоугольной или

квадратной области - подмножестве комплексной плоскости.

Page 9: Рекурсия в ПРОЛОГе

Примеры рекурсивных определений

1. Сумма первых N натуральных чисел S(N)=1+2+3+…+(N-1)+N

S(N)=

2. Степень с натуральным показателемXn = Xn-1*X

Xn =

1N если ,)1(

1N если ,1

NNS

1N если ,*11n если ,

XnX

X

Page 10: Рекурсия в ПРОЛОГе

Рекурсивные правила в ПРОЛОГе

Рекурсивное правило

Рекурсивная часть (обращение к себе)

нерекурсивная часть(остановка рекурсии)

Page 11: Рекурсия в ПРОЛОГе

Примеры рекурсивных правил:Вычисление факториала

n!=1*2*3*...*(n-1)*n.

Граничное условие: n=0 % нерекурсивная часть правила : 0! = 1

fact (0, 1):- !. % рекурсивная часть правила: n! = (n-1)!*n fact (N, FN):- M=N–1, fact (M, FM), FN=FM*N.

0 если ,)!*1(

0 если ,1

nnn

nn!=

Page 12: Рекурсия в ПРОЛОГе

fact (0, 1):- !.fact (N, FN):- M=N–1, fact (M, FM), FN=FM*N.

fact (3, FN)-----------------------

N=3 FN=

M=N-1--------------

2=3 -1

fact (2, FM)-----------------------

M=2 FM= FN=FM*N

-----------------

M’=M-1--------------

1=2 -1

fact (1, FM’)-----------------------

M’ = 1 FM’=FM=FM’*M

-------------------

M’’=M’-1--------------

0=1 -1

fact (0, FM’’)-----------------------

M’’=0 FM’’= 1

FM’=FM’’*M’--------------------

FM’=1*1=1

6

FN=2*3=6

FM=1*2=21

2

Page 13: Рекурсия в ПРОЛОГе

Примеры рекурсивных правил: Числа Фибоначчи

F(1)=1, Ff(2)=1, F(n)=F(n-1)+F(n-2).

1, 1, 2, 3, 5, 8, 13, 21,...

F(n) =

2 если ),2()1(

2 если ,1

nnFnF

n

Page 14: Рекурсия в ПРОЛОГе

Правило для вычисления n-го числа Фибоначчи

fib(N,F),

N-порядковый номер, F- значение N-го числа Фибоначчи

fib(1,1):-!. %F(1) =1

fib(2,1):-!. %F(2) =1

fib(N,F):- %F(N)=F(N-1)+F(N-2)

N1=N-1,fib(N1,F1),

N2=N-2,fib(N2,F2), F=F1+F2.

Page 15: Рекурсия в ПРОЛОГе

Задача о Ханойских башнях

(1)А → В:

Разложение исходной задачи на подзадачи:(1) Переложить 1,2-й диски с А на В (А→В)

(2) Переложить 3-й диск с А на С (А→С)

(3) Переложить 1,2-й диски с В на С (В→С)

(3)B → C:

C→ВА→С А→В

B→A B→C А→C

A

A

A

B

B

B

C

C

CРешение подзадач:

1,2

1,2

Решение при N=3

Page 16: Рекурсия в ПРОЛОГе

Рекурсивное правило для N дисков

move(1,A,B,C):- write("Перенести диск с ", A, " на  ",C),nl,!.

move(N,A,B,C):- M=N-1,move(M,A,C,B), write("Перенести диск с ", A ," на  ",C),nl, move(M,B,A,C).

Page 17: Рекурсия в ПРОЛОГе

Задача о Ханойских башнях

А В С

Перенести диск с A на BПеренести диск с A на CПеренести диск с B на CПеренести диск с A на BПеренести диск с C на AПеренести диск с C на BПеренести диск с A на BПеренести диск с A на CПеренести диск с B на CПеренести диск с B на AПеренести диск с C на AПеренести диск с B на CПеренести диск с A на BПеренести диск с A на CПеренести диск с B на C

Количество перемещений 2n -1