recursion - Lisp 递归不调用以前的函数

标签 recursion lisp conditional-statements

我试图让一个函数将传入参数的第一个参数与一个值进行比较,如果为真,则执行某个函数,然后递归地调用同一个函数。

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

但是,出于某种原因,它只是递归地遍历它而不是打印。谢谢。

最佳答案

也许你的意思是:

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

仅当 (first expression) 为 "+"时才递归 也没有进行 nil 检查。

关于recursion - Lisp 递归不调用以前的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563843/

相关文章:

javascript - 递归 isEqual 函数导致 Chrome 卡住

haskell - 打印表达式时最小化括号

css - 使用 CSS 选择递归 div 布局中的最后一个 div

javascript - 如何显示数字中最大的数字 - javascript

macros - 列出不在宏内部求值的 gensym 符号

python - Python 中的 CL-WHO : clever or just stupid?

方案评估程序和特殊表格

jquery - 如果选择第一个 TD,则禁用一行中的所有其他 TD

conditional-statements - NLog 条件变量值

python - 滚动条件均值