我想要一個函數比較傳入的參數的第一個參數值,然後如果它是真實的,執行一些函數,然後遞歸調用相同的函數。Lisp遞歸不調用以前的函數
(defun function (expression)
(cond
((equal (first expression) "+")
(progn (print "addition")
(function (rest expression))))))
由於某些原因,它只是通過遞歸而不是打印。謝謝。
我想要一個函數比較傳入的參數的第一個參數值,然後如果它是真實的,執行一些函數,然後遞歸調用相同的函數。Lisp遞歸不調用以前的函數
(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)))))
原始遞歸僅當(第一表達式)是「+」和 也沒有做零檢查。
in Common Lisp,FUNCTION是一個保留的符號。不要使用它。 – 2009-10-14 07:04:28