我有一个列表:(setq listy '(4 -3 8 99 -40 61 12 -8 2 -20))
我的函数lenPos
应该找到列表中所有正数的长度(即6)。但是,我收到了这个错误:
*** - +: NIL is not a number
在if语句中进行任何数字检查之前,我正在检查我的列表是否为空。所以我不明白错误的来源。
;num of positive elems
(defun lenPos (list)
(cond
((null list) 0) ;if null list return 0
(t (cond ;else
((> (car list) 0) (+ 1 (lenPos (cdr list))))
))
)
)
答案 0 :(得分:2)
如果list
不是null
,并且第一个元素不是正数,则该函数不会显式返回任何内容,因此隐式返回nil
。