为了账号安全,请及时绑定邮箱和手机立即绑定

Prolog后继符表示法产生不完整的结果和无限循环

Prolog后继符表示法产生不完整的结果和无限循环

我开始学习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”。结果代码为我提供了所有结果。再说一遍,为什么呢?它仍然死循环。如何解决?我读了无限循环上的另一个答案。但是我希望有人根据这种情况做出回答。这对我有很大帮助。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 613 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信