检查项目的存在口齿不清
问题描述:
要完成练习,我需要检查一个元素是否在列表或没有。我知道,有在口齿不清功能member
,但我们的教练是非常严格的,不会让我们使用还没有被覆盖在使用过程中的事情。检查项目的存在口齿不清
什么是检查是否一个原子是在列表中只使用cond
,nil
,car
,not
,cdr
,+
,equal
,defun
的方法吗?
编辑: Doseke的评论后,这里是一个尝试:
(defun presence (list item)
(cond
((atom list) nil)
((equal (car list) item) t)
((consp list) (presence (cdr list) item))
(t nil)
)
)
编辑:我改变了标题,使其与我的实际问题相匹配
答
既然你在使用的功能有限,它可能是这样的,我猜:
(defun member-2 (x xs)
(cond ((not xs) nil)
((equal x (car xs)) xs)
(t (member-2 x (cdr xs)))))
+0
小鸡蛋里挑骨头,用不是istead,这将是更好地使用ENDP,因为它传达的意图更好。或者至少为NULL – PuercoPop
+2
是的。我刚刚使用了op的问题中的约束。它包括'不',但不包括空值) – leetwinski
是否可以使用递归和检查项目是否等于汽车? – Doseke
@Doseke:是的,我是这么认为的 –
'atom','consp'和't'不是你“只使用”列表的一部分。 – kmkaplan