Итак, я пытался определить частное от целых чисел в прологе, используя только предикаты build "is", "*", "+" и "-".Он ожидает, что частное будет целым числом, поэтому мне не нужны никакие десятичные дроби или остатки.
Я быстро нашел решение, но по какой-то причине оно просто не будет работать так, как задумано.Это продолжает давать мне ту же ошибку, и я просто не могу понять, что я делаю неправильно.Я новичок в прологе, кстати.и из-за университета я должен разобраться в этом.
Вот что я пытаюсь:
div(0, 0, _).
div(1, Dividend, Dividend).
div(Quotient, Dividend, Divisor) :-
NewDividend is Dividend - Divisor,
div(NewQuotient, NewDividend , Divisor),
NewQuotient + 1 is Quotient.
Я в основном пытался что-нибудь от обмена вещами до добавления большего количества предикатов, таких как "div(Дивиденд, Дивиденд, 1). ".
Вот что я показываю, когда я набираю div (Y, 15, 3).
ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR: [13] 0+1 is _2768
ERROR: [12] div(_2798,3,3) at div.pl:63
ERROR: [11] div(_2826,6,3) at div.pl:63
ERROR: [10] div(_2854,9,3) at div.pl:63
ERROR: [9] div(_2882,12,3) at div.pl:63
ERROR: [8] div(_2910,15,3) at div.pl:63
ERROR: [7] <user>
Я вроде понимаю, чего хотят ошибкискажи мне, но я просто не понимаю, почему это не сработает, потому что я ожидаю, что это сработает.Получается, что коэффициент равен 0, если дивиденд равен 0, и с этого момента он должен просто добавить 1 с, пока он не вернется при первом вызове, но не будет.Кстати, я должен использовать эту подпись для своего предиката.Это задание из университета.Любая помощь приветствуется!