2017-10-28 37 views
0

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

回答

2

如果listnull,并且第一个元素是不积极,那么函数没有明确返回任何东西,所以隐式返回nil

+0

是。在嵌套 - 如果我需要一个else语句:(t(+ 0(lenPos(cdr list)))) – nhershy

相关问题