0
如何编写mod/3函数后继算术(Peano's Numbers)in prolog?后继算术Prolog调制函数
如何编写mod/3函数后继算术(Peano's Numbers)in prolog?后继算术Prolog调制函数
认为它是这样的:
如果你想找到的10和4的MOD,你把10乘4并返回提醒。但是因为divide是多次减法,所以我们将在这里使用多重减法逻辑。
例如:10 mod 4
是相同10-4 mod 4
这是6 mod 4
其是作为6-4 mod 4
= 2 mod 4
再次相同。由于第一个元素(2)小于第二个(4),我们在此终止程序并返回第一个元素(2)。
mod(_, 0, 0).
说任何事情MOD 0是0
mod(0, _ , 0).
说的是0 MOD什么是0
mod(X, s(0), 0).
说任何事情MOD 1是0。
这是棘手的部分:
mod(A, B, N) :- minus(A, B, R), (R @< B -> N = R ; mod(R, B, N)).
这使用多个减号逻辑。如果先从第一个中删除第二个,然后检查第一个是否小于第二个。如果是,则递归调用mod函数。如果不返回第一个元素。
s(0).
s(X):- X.
plus(0, Y, Y).
plus(s(X), Y, s(Z)):- plus(X , Y , Z).
minus(A, B, C) :- plus(C, B, A).
mod(_, 0, 0).
mod(0, _ , 0).
mod(X, s(0), 0).
mod(A, B, N) :- minus(A, B, R), (R @< B -> N = R ; mod(R, B, N)).
谢谢@Toby编辑请求。
虽然这段代码可能有助于解决问题,但它并没有解释_why_和/或_how_它是如何回答问题的。提供这种附加背景将显着提高其长期教育价值。请[编辑]您的答案以添加解释,包括适用的限制和假设。 –