2011-05-23 54 views
1

我是Prolog的新手,并且停留在一些编程作业上。他们中的一个应该像这样工作:如何在Prolog中写入myDel?

myDel(1, [1, 2, 1, 3, 1, 4], M). 

的结果应该是:

M = [2, 3, 4]. 

来解决这个问题,可以只能使用追加递归,可以不能使用内置删除

有人可以帮忙吗?

回答

2

我必须说,如果不给您提供答案,就很难提供帮助。 Prolog有点像这样。这里有一个部分答案,希望不会给太多:

myDel(N, [], []). 
myDel(N, [N|T], U) :- ... 
+0

感谢,我也到达这里,但不幸stucked> _ < – bearzk 2011-05-23 10:30:27

+0

想想有什么关系T和U必须具备的答案是有效的,你怎么会在第二个子句的身体表达这一点。还要考虑第三个条款的必要性,其中第二个列表的头部不等于N('myDel(N,[H | T],...')。 – 2011-05-23 10:38:25

0

对不起!切需要。

myDel(N,L,DelL) :- 
    append(L0,[N|R],L), 
    myDel(N,R,DelL2), 
    append(L0,DelL2,DelL), 
    !. 
myDel(_,L,L). 
+0

非常感谢您的回答! !但马塞洛先来,并且早点给我一点:) – bearzk 2011-05-25 08:50:25