我试图让一个函数将传入参数的第一个参数与一个值进行比较,如果为真,则执行某个函数,然后递归地调用同一个函数。
(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/