【发布时间】:2017-01-11 03:58:46
【问题描述】:
要完成一个练习,我需要检查一个元素是否在列表中。我知道lisp里面有member这个功能,但是我们的导师很严格,不让我们使用课程中还没有涉及到的东西。
如果只使用cond、nil、car、not、cdr、+、equal、@987654329 来检查一个原子是否在列表中的方法是什么? @?
编辑: 在多塞克发表评论后;这是一个尝试:
(defun presence (list item)
(cond
((atom list) nil)
((equal (car list) item) t)
((consp list) (presence (cdr list) item))
(t nil)
)
)
编辑:我更改了标题以使其与我的实际问题相匹配
【问题讨论】:
-
是否可以使用递归并检查 item 是否等于 car?
-
@Doseke:是的,我想是的
-
atom、consp和t不属于您的“仅使用”列表。 -
“尝试”似乎成功了。如果您愿意,您可以自行回答。
-
该问题与它的标题不一致,标题说您必须返回与成员相同的结果。 member 返回您寻找的值是汽车的 cons 单元格。但是您的问题文本说“检查是否...”,它只需要一个布尔值。如果您需要像 member 一样返回 cons 单元格,那么您还有一些工作要做! :)
标签: lisp common-lisp member