2013-10-23 59 views
0

在这个例子中,索菲亚是乔治的母亲。序言,不知道为什么它返回没有

当我输入代码:motherOf(sophia,george). prolog返回yes。

但是,如果我输入:motherOf(X,george).它返回X=sophia ?我键入y,但它返回no。

当它应该是yes时,返回no的原因是什么?

+0

另一个例子是如果我做'motherOf(sophia,Y).'它返回'Y = george'是的。 – Bob

+0

您使用的是什么prolog实现? –

+0

@aBathologist gprolog – Bob

回答

2

“否”因为没有任何其他解决方案。如果sophia有不止一个孩子,在查询“motherOf(sophia,Y)”时,您将得到两种解决方案。“在电脑前说“不” 尝试使用额外的“motherOf(索菲亚,本垒打)”。 DB中的子句。

+0

谢谢,只是确保我没有犯错。我甚至注意到,如果我只是按回车,它会返回一个是。 – Bob

+1

@BobDunakey这是因为当你按回车你告诉Prolog不要搜索任何更多的解决方案。所以没有找到另一个失败(这是为什么输入';'产生一个“否”,因为它搜索另一个失败)。当你输入'motherOf(sophia,george).'时,它只有一个选择,因为没有无实际意义的变量,所以如果你输入的内容是真的,它会返回“是”,否则如果没有找到它会返回“否” (这是错误的)。 – lurker

相关问题