我得到了一個CLISP「 - 程序堆棧溢出」的提示,當我嘗試執行下面的遞歸函數,我相信,返回最常見的元素列表:堆棧溢出執行遞歸時口齒不清功能
(defun greater-member (lst)
(cond ((null (cdr lst))
(cons (car lst) (count-if #'(lambda (x) (eql x (car lst))) lst)))
((>= (count-if #'(lambda (x) (eql x (car lst))) lst)
(count-if #'(lambda (x) (eql x (car (remove (car lst) lst)))) lst))
(greater-member (remove (car (remove (car lst) lst)) lst)))
(t (greater-member (remove (car lst) lst)))))
例如更大的數應該返回如下:
>(greater-number '(a a a b b b b c))
(b . 4)
請問,是什麼原因造成的溢出?我已經通過在clisp中重複執行更大數字來消除所有的小語法錯誤 -該函數似乎在邏輯上保持不變。
爲什麼不使用調試TRACE,步驟或打印參數的函數? –
在實際使用之前,我還沒有聽說過這些功能。我會看看他們。 – category
本書解釋了基本知識:http://www.cs.cmu.edu/~dst/LispBook/ –