【发布时间】:2021-04-15 03:42:31
【问题描述】:
所以我试图接受两个参数,一个列表和一个数字,当且仅当数字等于列表中的任何元素时才返回 true
(defun find-num(a z)
(if (= z (car a)) (write t))
(if (not(= z (car a))) (find-num (cdr a)) )
(if (not(= z (car a))) (write f) )
)
(find-num '(1 2 3 4 5) 5)
所以我假设代码会执行这些步骤 如果 z 等于 a ,则返回 true, 如果 z 不等于 a ,则写入 f (返回 false )或跳转到递归函数,该函数在其余列表中查找数字,直到找到相同的数字
但是,我收到了这样的错误
VAL/APPLY: Too few arguments (1 instead of at least 2) given to
FIND-NUM
我不确定是哪一部分搞砸了
我尝试使用 cond 语句,但也收到了同样的错误
(defun find-num(a z)
(cond
( (= z (car a)) (write t) )
( (not(= z (car a))) (find-num (cdr a)) )
( (not(= z (car a))) (write f) )
)
)
(find-num '(1 2 3 4 5) 5)
【问题讨论】:
标签: lisp common-lisp