【发布时间】:2019-10-02 17:09:50
【问题描述】:
我正在创建一个计算列表中原子数的递归函数。它应该能够计算嵌套列表的原子。 例如:(a (b c) e d) 或 (a (b c (g e)) e d),它应该分别计算 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))))
)
)
我得到的输出是 3,但它应该是 5(基于 (a (b c) e d))。我猜这个函数在它到达 c 的那一刻就停止了。如何使函数不在 c 处停止并使其返回最外层列表。
【问题讨论】:
标签: recursion lisp common-lisp