Я получаю приглашение «-Program stack overflow» в 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 — кажется, что функция выполняется логически.