0

我想编写一个程序来删除给定列表中出现的任何成员,如下所示:

deleteall(1,[1,2,3,1,3,2,5],Out)                
Out= [2,3,3,2,5]

我怎样才能做到这一点?这是我的尝试:

deleteall(X,[],[]).                
deleteall(X,[H1|T1],[H2|T2]) :- deleteall (X,T1,T2).
4

1 回答 1

0

请尝试以下方法。您在原始程序中缺少一个条件。

deleteall(_,[],[]).
deleteall(X,[X|T1],T2) :- deleteall(X,T1,T2).
deleteall(X,[H1|T1],[H1|T2]) :- not(X=H1), deleteall(X,T1,T2).
于 2012-04-21T01:46:34.143 回答