Prolog 不间断循环
嗨,我有一个我无法解决的问题。 我是一名Prolog新手,我见过很多家谱的例子,但似乎没有一个能解决我的问题 说我有Prolog 不间断循环,prolog,infinite-loop,Prolog,Infinite Loop,嗨,我有一个我无法解决的问题。 我是一名Prolog新手,我见过很多家谱的例子,但似乎没有一个能解决我的问题 说我有 son(X, Y) :- \+daughter(X, Y), father(Y, X). father(Y, X) :- male(X), son(X, Y). 我调用其中一个,它会在两个条件之间来回移动,因为每个条件都会满足之前的条件,因此会导致局部堆栈错误 大多数人似乎建议删除其中一个定义,但我需要回答父子的问题。请帮帮我,这看起来很简单,但我就是
son(X, Y) :-
\+daughter(X, Y),
father(Y, X).
father(Y, X) :-
male(X),
son(X, Y).
我调用其中一个,它会在两个条件之间来回移动,因为每个条件都会满足之前的条件,因此会导致局部堆栈错误
大多数人似乎建议删除其中一个定义,但我需要回答父子的问题。请帮帮我,这看起来很简单,但我就是想不出来。循环一次后,我如何打破
TIA您可以:
1) 您可以使用包装谓词:
father(Y,X):-
male(X),
son_data(X,Y).
son(X,Y):-
son_data(X,Y).
son(X,Y):-
\+daughter(X, Y),
father(Y, X).
您的数据库应该如下所示
son_data(mike,steph).
....
father(nick,john).
....
(无子/2个条目)
2) 使用支持的prolog版本(如XSB)(或实现它;这不是一个好主意)