我正在阅读一本编程语言书,它要求我解释以下Scheme函数的作用(不确定,有人可以帮忙解释):
(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))))))
答案 0 :(得分:5)
它计算嵌套列表结构的叶节点数,忽略#f
。它使用递归过程:
car
不是列表的对:
car
为#f
,我们会对cdr
进行递归并返回。car
计为1,并将其添加到cdr
的递归结果中。car
和cdr
进行了递归,并将它们加在一起。