删除所有出现次数

时间:2015-04-14 20:25:18

标签: lisp common-lisp

删除所有出现问题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)))))

1 个答案:

答案 0 :(得分:0)

在第二个术语中,您从谓词中知道第一个元素中有一个列表。除了需要处理car以及cdr之外,您应该与第三个结果相同。