计算列表中有多少正数(NIL不是数字?)

时间:2017-10-28 22:56:11

标签: lisp

我有一个列表:(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))))
        ))
    )
)

1 个答案:

答案 0 :(得分:2)

如果list不是null,并且第一个元素不是正数,则该函数不会显式返回任何内容,因此隐式返回nil