2017-10-28 64 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

相關問題