计数许多正数如何在列表(NIL不是一个数字?)
问题描述:
我有一个列表:(setq listy '(4 -3 8 99 -40 61 12 -8 2 -20))
计数许多正数如何在列表(NIL不是一个数字?)
我的功能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))))
))
)
)
答
如果list
不null
,并且第一个元素是不积极,那么函数没有明确返回任何东西,所以隐式返回nil
。
是。在嵌套 - 如果我需要一个else语句:(t(+ 0(lenPos(cdr list)))) – nhershy