我得到了一个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/ –