请帮助一些prolog的基础知识

时间:2012-04-21 01:25:41

标签: prolog

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

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).

1 个答案:

答案 0 :(得分:0)

请尝试以下方法。您错过了原始计划中的条件。

deleteall(_,[],[]).
deleteall(X,[X|T1],T2) :- deleteall(X,T1,T2).
deleteall(X,[H1|T1],[H1|T2]) :- not(X=H1), deleteall(X,T1,T2).