Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемМарианна Чепурнова
1 Директивы компилятора. Рекурсия на Прологе Лекция 4
2 План Структура программы на Прологе. Домены: стандартные, списковые, составные. Альтернативные домены. Рекурсия в Прологе.
3 Директивы компилятора trace nowarnings include check_determ
4 Константы CONSTANTS pi=3.14 bgi_path="c:\\prolog\\bgi"
5 Домены integer - целое число ( ); real - действительное число (±e ±1e 308 ); char - символ в одиночных апострофах; string - последовательность символов в «»; symbol - символическая константа (атом); file - файл.
6 Стандартные предикаты readln readint readreal readchar inkey keypressed readterm write nl upper_lower str_int str_real str_char char_int true fail bound
7 Программа «Родственники» предок(Предок,Потомок):- родитель(Предок,Потомок). /* предком является родитель */ предок(Предок,Потомок):- родитель(Предок,Человек), предок(Человек,Потомок). /* предком является родитель предка */
8 Правило, реализующее шаг рекурсии :- [ ],, [ ].
9 Программа «Факториал» 1!=1 /* факториал единицы равен единице */ N!=(N-1)!*N /* для того, чтобы вычислить факториал некоторого числа, нужно вычислить факториал числа на единицу меньшего и умножить его на исходное число */
10 Факториал fact(1,1). /* факториал единицы равен единице */ fact(N,F):- N1=N-1, fact(N1,F1), /* F1 равен факториалу числа на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */
11 Факториал fact(1,1). /* факториал единицы равен единице */ fact(N,F):- N>1, /* убедимся, что число больше единицы */ N1=N-1, fact(N1,F1), /* F1 равен факториалу числа, на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */
12 Факториал fact(1,1):-!. /* условие останова рекурсии */ fact(N,F):- N1=N-1, fact(N1,F1), /* F1 равен факториалу числа, на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */
13 Факториал fact2(N,F,N,F):-!. /* останавливаем рекурсию, когда третий аргумент равен первому*/ fact2(N,F,N1,F1):- N2=N1+1, /* N2 - следующее натуральное число после числа N1 */ F2=F1*N2, /* F2 - факториал N2 */ fact2(N,F,N2,F2). /* рекурсивный вызов с новым натуральным числом N2 и соответствующим ему посчитанным факториалом F2 */
14 Факториал factM(N,F):- fact2(N,F,1,1). /* вызываем предикат с уже заданными начальными значениями */
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.