2011-01-20 103 views
0

我是新來的Prolog,我試圖檢查第一個列表中的任何元素是否在第二個列表上有匹配。我認爲這將遞歸工作,我知道我必須使用類似[X | Rest]的比較,然後通過再次調用該函數來使用該休息。語法確實讓我困惑,因此我在尋求幫助。我希望我很清楚。2個列表上的匹配元素

編輯:哦,如果列表中沒有匹配的元素,則返回false,如果找到一個匹配,則返回true(也可以終止)(至少,但是一個足夠了,因此建議終止,我相信你使用!爲此?)。

回答

0

這是一個建議。

我們在第一個列表上遞歸。第一個定義是針對基本情況(第一個列表爲空)。第二個定義適用於第一個列表的第一個元素位於第二個元素的情況。第三種情況是針對剩下的情況,其中我們必須檢查第一個清單的剩餘部分。

 
common_elements([], L) :- 
    fail. 

common_elements([H|T], L) :- 
    memberchk(H, L), !. 

common_elements([H|T], L) :- 
    common_elements(T, L). 
+0

我會接受你的建議,謝謝:) – Qosmo 2011-01-21 00:14:03