我试图了解 Prolog 以及它如何使用解析算法。我有这个例子,我发现:
hates(1, 2).
hates(2, 3).
hates(3, 4).
jealous(A, B) :- jealous(A, C), jealous(C,B).
jealous(A,B) :- hates(A,B).
Run Code Online (Sandbox Code Playgroud)
但是当我试图说jealous(1,4)然后它不断溢出并且永远不会产生真时,这很奇怪,好像1讨厌2,2讨厌3,3讨厌4,那么1也应该讨厌4。
但是我尝试改变它,所以它是这样的:
hates(1, 2).
hates(2, 3).
hates(3, 4).
jealous(A,B) :- hates(A,B).
jealous(A, B) :- jealous(A, C), jealous(C,B).
Run Code Online (Sandbox Code Playgroud)
然后当我说jealous(1,4).