2013-10-23 60 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

相關問題