检查项目的存在口齿不清

问题描述:

要完成练习,我需要检查一个元素是否在列表或没有。我知道,有在口齿不清功能member,但我们的教练是非常严格的,不会让我们使用还没有被覆盖在使用过程中的事情。检查项目的存在口齿不清

什么是检查是否一个原子是在列表中只使用condnilcarnotcdr+equaldefun的方法吗?


编辑: Doseke的评论后,这里是一个尝试:

(defun presence (list item) 
    (cond 
     ((atom list) nil) 
     ((equal (car list) item) t) 
     ((consp list) (presence (cdr list) item)) 
     (t nil) 
    ) 
    ) 

编辑:我改变了标题,使其与我的实际问题相匹配

+0

是否可以使用递归和检查项目是否等于汽车? – Doseke

+0

@Doseke:是的,我是这么认为的 –

+0

'atom','consp'和't'不是你“只使用”列表的一部分。 – kmkaplan

既然你在使用的功能有限,它可能是这样的,我猜:

(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