2011-01-20 22 views
0

私はPrologを初めて使いました。最初のリストの要素に2番目のリストの要素があるかどうかを確認しようとしています。私はこれが再帰的に動作すると思います。私は[X | Rest]のようなものを比較するために使用しなければならないことを知っています。構文は確かに私をつかまえているので、私は助けを求めています。私は十分に明確であることを望む。2つのリストの要素を一致させる

編集:リストに一致する要素がない場合はtrueを返し、1つの一致が見つかった場合はtrue(終了することもできます)(少なくとも1つは十分です。したがって、終了するよう提案します)あなたはそれを使っていますか?)。

答えて

0

ここに提案があります。

最初のリストに記載されています。最初の定義は基本ケース(最初のリストは空)です。 2番目の定義は、最初のリストの最初の要素が2番目の要素にある場合です。 3番目のケースは残りのケースで、最初のリストの残りの部分を調べなければなりません。

 
common_elements([], L) :- 
    fail. 

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

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

私はあなたの提案を受け入れます、ありがとうございます:) – Qosmo

+1

最初の句は必須ではありません。 – mat

+1

@mat:それは本当に真実です。それを指摘してくれてありがとう。 – Qosmo

関連する問題