2015-04-14 34 views
0

删除所有出现的问题5(0/32)删除所有出现

定义一个函数deleteAll具有两个输入参数x和L,其中,x是原子,L是一个包含原子元素和子列表的列表任何级别,并且函数返回一个列表,其中列表中所有出现的x都从列表L中删除。

列表中包含子列表时出现问题。我不能在子列表中递归地检查它是否包含重复或不是。

(defun deleteAll (x L) 
    (cond 
     ((null L) nil) 
     ((not(atom(car L))) (deleteAll x (cdr L))) 
     ((not(eq x (car L))) (cons (car L) (deleteAll x (cdr L)))) 
     (T(deleteAll x (cdr L))))) 
+0

“问题5(0/32)”?你是要求我们为你做功课吗? –

+0

@JoshuaTaylor他非常接近解决方案。 – Sylwester

+0

@Sylwester当然,但是将作业问题逐字发布并做一些调试来区分问题并专门提出问题是有区别的(并且我确实认识到“当列表具有子列表时,我有问题,我无法在子列表中递归地检查它是否包含重复或不)“。即便如此,没有归属地复制和粘贴作业作业也是可能导致版权问题的剽窃。 –

回答

0

在第二学期你从谓词中知道你在第一个元素中获得了一个列表。除了需要处理car以及cdr之外,您应该按照第三个结果执行相同操作。