Recursion Lisp递归不调用以前的函数
我试图让一个函数比较传入参数的第一个参数和一个值,如果是真的,执行一些函数,然后递归调用同一个函数Recursion Lisp递归不调用以前的函数,recursion,lisp,conditional,Recursion,Lisp,Conditional,我试图让一个函数比较传入参数的第一个参数和一个值,如果是真的,执行一些函数,然后递归调用同一个函数 (defun function (expression) (cond ((equal (first expression) "+") (progn (print "addition") (function (rest expression)))))) 然而,出于某种原因,它只是递归地进行,而不是打印。谢谢。也许你的意思是: (defun functi
(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)))))
仅当(第一个表达式)为“+”时,原始表达式才会递归
并且也无法执行nil检查。在Common Lisp中,函数是保留符号。不要使用它。重新格式化后,您会立即看到这将不起作用。错误是变量“equal”没有绑定。你是对的,我在“(equal…)周围掉了“()”。手指比大脑快。