删除所有出现的问题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)))))
最佳答案
在第二个术语中,从谓词可以知道第一个元素中有一个列表除了需要处理car
和cdr
之外,您应该执行与第三个结果相同的操作。