2016-12-03 33 views
0

測試二叉樹我要測試的這款Prolog程序:如何在序言

binary_tree(void). 

binary_tree(tree(_Element,Left,Right)):-binary_tree(Left),binary_tree(Right). 

test(tree(a,tree(b,tree(d,void,void),void),tree(c,void,void))). 

當我執行它:

test(X), binary_tree(X). 

我得到

X = tree(a, tree(b, tree(d, void, void), void), tree(c, void, void)). 

(我應該變成「真」)

我在做什麼錯?

感謝

+0

@IsabelleNewbie是對的 – CapelliC

回答

2

誰說你應該得到true呢?調用Prolog謂詞可能成功或失敗。在成功的時候,他們用變量替代來回答,就像你的情況一樣。您的Prolog系統的答案表示您的測試成功,正如您所期望的那樣。

如果由於查詢不包含任何變量而沒有給出變量替換,通常只會得到true。如果查詢失敗,您將得到falsefail,但沒有變量替換。