删除所有出现的问题 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
之外,您应该执行与第三个结果相同的操作。
关于lisp - 删除所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636770/