在列表中计数1 2的Lisp函数

时间:2017-04-25 14:53:34

标签: lisp

该函数的目的是使用lisp计算列表中12的出现次数。

我写的代码:

(defun count12 (x)
    (if (null x) 0
        (if (and (= 1 (car x)) (= 2 (cadr x)))
            (+ 1 (count12 (cdr x)))
            (+ 0 (count12 (cdr x)))
         )
     )
)

我使用它时会产生错误:

  

错误,警告:   *** - =:NIL不是数字

请注意,我使用的是Lisp在线编译器:rextester

感谢您的帮助&导

1 个答案:

答案 0 :(得分:0)

当您到达列表的最后一个元素时,您将比较2nilcadr的{​​{1}}为nil )。

您需要测试单身人士名单:

nil