我正在创建一个递归函数,用于计算列表中的原子数。它应该能够计算嵌套列表的原子数。例如:(a(bc)ed)或(a(bc(ge))ed),应分别计算b和c或分别计算b,c,e和d而不是整体。
这是我创建的功能:
(defun count-atoms (mylist)
(cond
((null mylist) 0)
((listp (car mylist)) (count-atoms (car mylist)))
((atom (car mylist)) (+ 1 (count-atoms (rest mylist))))
)
)
Run Code Online (Sandbox Code Playgroud)
我得到的输出是3,但应该是5(基于(a(bc)ed))。我猜想函数到达c时就停止了。如何使函数不止于c并返回最外层列表。