我正在尝试编写一个函数来计算列表上层的原子数。例如,如果我有一个 '(a b ((a) c) e)
,它应该返回 3,这意味着上层有 3 个原子。
我还想创建一个计算列表中子列表数量的函数。第二个函数应该从上下每个级别计算。如果我们有'(a ((b) s))
,如果子列表在上层,它应该返回 1,如果函数从上层到下层或列表的任何层计数,它应该返回 2。
我下面的代码计算了列表中的原子数,这是我不想要的。我该如何解决?以及如何编码其他功能?
(defun count-atoms(L)
(cond
((null l) 0)
((atom l) 1)
(t (+ (count-atoms (car l))
(count-atoms (cdr l))))))
如果我运行上面的代码,让我们说
(count-atoms '(a b ((a) c) e))
它给了我 5。