1

我正在编写一个子集函数,并且我已经成功地做到了。这是我实现成员函数的函数:

 member( X, [ X | T ] ).
 member( X, [ _ | T ] ) :- member( X, T ).

 subset([], _).
 subset([H|T1], T2) :-
    member(H, T2),
    subset(T1, T2). 
 subset([H1|T1], [H2|T2]) :-
    \+ member(H1, T2),
    subset([H1|T1], T2).

我的问题是,有没有更好的方法来使用成员函数来编写这个函数。

4

1 回答 1

2

的第三个条款subset/3没有意义,我认为应该删除它。如果H1不是 的成员T2,那么递归调用subset([H1|T1], T2)显然也不会成功。

除此之外,前两个子句似乎是要走的路。

于 2012-12-18T18:14:42.890 回答