我有一个具有以下属性的 Scheme 函数:它计算嵌套列表结构的叶节点数,忽略 #f。它使用递归过程:
- 如果输入是一个空列表,则这是返回 0 的基本情况。
- 如果输入是汽车不是列表的对:
- 如果汽车是#f,我们在 cdr 上递归并返回它。
- 否则,我们将 car 计为 1,并将其添加到 cdr 上的递归结果中。
- 最后,我们对 car 和 cdr 进行递归,并将它们相加。
如何将以下代码转换为编程语言 Clojure?
(define (x lis)
(cond ((null? lis) 0)
((not (list? (car lis)))
(cond
((eq? (car lis) #f) (x (cdr lis)))
(else (+ 1 (x (cdr lis))))))
(else (+ (x (car lis)) (x (cdr lis))))))