Loading…
Transcript

Рекурсия

Мысал келтіру

Прологтағы қарапайым рекурсия және мәліметтер қорын құру

Мәліметтер қоры

Мысал келтіру

Рекурсия - Прологта қайталанатын әрекеттерді ұйымдастырудың екінші құралы. Рекурсивті процедура - бұл рекурсияны тоқтататын шарт орындалғанға дейін өзін шақыратын процедура. Бұл шарт шекара деп аталады. Рекурсия - бұл бір типтегі ішкі асты бар мәселелерді шешудің жақсы тәсілі.

Рекурсия мысалы: факторлық n табу!

N коэффициентін табу мәселесі! Бұл рекурсияның көмегімен өте жақсы шешіледі, өйткені оны ұқсас кіші бағдарламаны шешуге дейін азайтуға болады, ол өз кезегінде ұқсас шағын бағдарламаны шешуге келеді және т.б.

Факторлық n мәнін табу үшін, сіз факторлық (n-1) мәнін таба аласыз! және табылған мәнді n-ге көбейт. (N-1) факторлық мәнін табу үшін! бұрыннан белгілі жолды ұстануға болады - (n-2) факторлық мәнді табыңыз! және табылған мәнді n-1-ге көбейт. Осылайша, біз (n-n) факторлық мәнді таба алмайынша әрекет жасай аламыз! немесе басқаша айтқанда, факторлық 0! Факторлық мән - 0! бұл белгілі - бұл 1. Бұл рекурсияны тоқтататын шекаралық шарт болады. Қазір қалған нәрсе - алынған 1-ге көбейту, (n- (n-1)), содан кейін (n- (n-2)), т.б. қайталанбалы қоңыраулар болған. Нәтиже n! алды.

Text

PREDICATES

factorial (integer, integer)

CLAUSES

%факториал 0! 1 тең

factorial (0, 1):- !.

%факториал n! фактариалға тең

(n-1)!, n қөбейтілген

factorial (N, Factorial_N):- M=N-1, factorial (M, Factorial_M),

Factorial_N=Factorial_M*N.

GOAL

write ("Қандай санға дейін фактариал тапқыңыз келеді? "), readint (Number),

factorial (Number, Result), write (Number, "!=", Result).

Бағдарламаның нәтижесі:3!=6

Picture

Prolog тіліндегі деректер қоры– бұл деректер жиынтығы. Жұмыс барысында деректер қорына жаңа

деректерді қосып, ескілерін жаңартып, жойып отыруға болады. Пролог тіліндегі жалпыланған

мəліметтер мен білімдер нақты мəліметтерді шығару ережелері негізінде беріледі.

Көптеген логикалық есептер бірнеше ақырлы жиындарды (элементтерінің саны бірдей болатын) қарастырумен байланысты. Олардың арасында өзара –бірмәнді сәйкестік орнатылады. Пролог тілінде осы жиындарды мәліметтер базасы ретінде қарастыруға болады. Обьектілер арасындағы тәуелсіздіктер ережелер көмегімен қойылады.

Үш дос балалар әңгімелесіп отыр: Ақбасов, Сарыбасов және Қарабасов. Қарабасов Ақбасовқа былай деді: «Қызық екен, екеуіміздің біреуіміздің шашымыз - ақ, екіншіміздікі - қара. Ал үшіншіміздікі - сары. Бірақ та ешқайсымыздың шашымыздың түсі фамилиямызға сәйкес келмейді. Дос балалардың шаштарының түсі қандай.

Дәстүрлі тәсілде есеп кесте сызу арқылы шешіледі.

Фамилия

Шаш түсі

сары

ақ

Қара

Ақбасов

+

-

-

Қарабасов

-

+

-

Сарыбасов

-

-

+