Мне нужно написать функцию, которая учитывает все вхождения данного атома внутри списка. Это то, что у меня есть:Подсчет всех вхождений атома в список? - LISP
(defun my-count (a L)
(cond
((null L) nil)
((equal a (car L))(+ 1 (my-count a (cdr L))))
(t (my-count a(cdr L)))
)
)
По-моему, это должно сработать. Однако, когда я запускаю трассировку, я нахожу, что когда (равно автомобилю L) оценивается значение true, он делает рекурсивный вызов, но не инициализирует + 1. Очевидно, что-то мне не хватает.
(FREQ 'е' (((е) е) и далее)), получив неверный счет .. –
@MaksimKniazev Что такое 'freq'? Если вы ссылаетесь на 'my-count', он считает атомы в плоском списке, а не вложенном списке (дерево a.k.a.). – uselpa
Как мне сделать в тестируемом? Вы можете помочь? –