我开始学习Prolog,首先学习了后继符号。这就是我在Prolog中编写Peano公理的地方。参见PDF的第12页:sum(0, M, M).sum(s(N), M, s(K)) :- sum(N,M,K).prod(0,M,0).prod(s(N), M, P) :- prod(N,M,K), sum(K,M,P).我将乘法规则放入Prolog。然后我执行查询:?- prod(X,Y,s(s(s(s(s(s(0))))))).这意味着基本上找到6的因数。这是结果。X = s(0),Y = s(s(s(s(s(s(0)))))) ? ;X = s(s(0)),Y = s(s(s(0))) ? ;X = s(s(s(0))),Y = s(s(0)) ? ;infinite loop此结果有两个问题:并未显示所有结果,请注意缺少结果X = 6,Y = 1。除非我按Ctrl + C然后选择中止,否则它不会停止。所以...我的问题是:这是为什么?我尝试切换“ prod”和“ sum”。结果代码为我提供了所有结果。再说一遍,为什么呢?它仍然死循环。如何解决?我读了无限循环上的另一个答案。但是我希望有人根据这种情况做出回答。这对我有很大帮助。
添加回答
举报
0/150
提交
取消