2017-10-28 3 views
0

목록에 얼마나 계산 : 목록에있는 모든 양수의 길이를 찾아야한다 (setq listy '(4 -3 8 99 -40 61 12 -8 2 -20))많은 양의 숫자가 나는 목록이 (NIL은 숫자가 아닌?)

내 기능 lenPos (즉 6). 그러나이 오류가 나타납니다.

*** - +: NIL is not a number 

if 문에서 번호 확인을 수행하기 전에 내 목록이 null인지 확인하고 있습니다. 따라서 오류의 출처를 이해하지 못합니다. listnull하지 않고, 첫 번째 요소는 긍정적없는 경우

;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

, 다음 함수는 명시 적으로 암시 nil 반환 아무것도 반환하지 않습니다.

+0

예. 중첩 된 경우 - else 문이 필요한 경우 : (t (+ 0 (lenPos (cdr list)))) – nhershy