Lisp递归不调用以前的函数

时间:2009-10-14 01:40:38

标签: recursion lisp conditional

我正在尝试将传入参数的第一个参数与值进行比较,然后如果为真,则执行一些函数,然后递归调用相同的函数。

(defun function (expression)
  (cond
    ((equal (first expression) "+")
     (progn (print "addition")
            (function (rest expression))))))

出于某种原因,它只是递归而不是打印。感谢。

1 个答案:

答案 0 :(得分:0)

也许你的意思是说:

(defun function (expression)
  (cond (expression
         (cond (equal (first expression) "+")
               (print "addition")))
         (function (rest expression)))))

原始递归仅在(第一个表达式)为“+”时 并且也没有进行零检查。