用if和only-if在prolog中编程

用if和only-if在prolog中编程,prolog,Prolog,我很难理解为什么我的解决方案实现了谓词find_inX,Y,如果X在Y中,或者X可以在Y中的对象中找到,那么这是真的。 我想出了一个解决办法 find_in(X,Y):-in(X,Y);in(Y,Z),in(Z,X) 但是它是错误的,所以我想知道如何正确地执行它,并理解我的答案是错误的。看起来您在您的子句的第二部分中交换了X和Y: find_in(X,Y):-in(X,Y);in(X,Z),in(Z,Y). 编辑:在子句末尾添加了缺少的“.”。看起来您在子句的第二部分中交换了X和Y: fin

我很难理解为什么我的解决方案实现了谓词find_inX,Y,如果X在Y中,或者X可以在Y中的对象中找到,那么这是真的。 我想出了一个解决办法

find_in(X,Y):-in(X,Y);in(Y,Z),in(Z,X)

但是它是错误的,所以我想知道如何正确地执行它,并理解我的答案是错误的。

看起来您在您的子句的第二部分中交换了X和Y:

find_in(X,Y):-in(X,Y);in(X,Z),in(Z,Y).

编辑:在子句末尾添加了缺少的“.”。

看起来您在子句的第二部分中交换了X和Y:

find_in(X,Y):-in(X,Y);in(X,Z),in(Z,Y).

编辑:在子句末尾添加缺少的“.”。

正如德克在回答中指出的那样,您可能交换了X和Y。 为了获得许可,我会把箱子分开

find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), in(Z,Y).
作为补充,您可能需要深入到多个层次。这只是一个小小的调整

find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), find_in(Z,Y).

例如,如果a在b中,b在c中,依此类推。。找到ina,z也将计算为真。

正如德克在回答中指出的那样,你可能交换了X和Y。 为了获得许可,我会把箱子分开

find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), in(Z,Y).
作为补充,您可能需要深入到多个层次。这只是一个小小的调整

find_in(X,Y) :- in(X,Y).
find_in(X,Y) :- in(X,Z), find_in(Z,Y).

例如,如果a在b中,b在c中,依此类推。。如果找到,z也将计算为真。

没有特殊原因。事实上,OP没有语法错误——它是在一次编辑中出现的。我试图更正它,并将其重新添加到问题中,但不允许编辑少于6个字符。sX。Thx 4解释。没有特别的原因。事实上,OP没有语法错误——它是在一次编辑中出现的。我试图更正它,并将其重新添加到问题中,但不允许编辑少于6个字符。sX。thx4解释。