我正在尝试弄清楚如何在球拍中定义长度功能。 这是我的代码:
(define mylength
(lambda (lst)
(cond
((null? lst) 0)
(else (+ 1 (mylength (cdr lst))))
)))
如果我尝试(mylength '(1 2 3))
的结果是3。当我尝试(mylength '(1 (2 3) 4))
的结果仍然是3。但是结果应该是4。我该怎么做?在球拍中
答案 0 :(得分:0)
如果要分别计算嵌套元素,则还需要递归到(car lst)
。
(define mylength
(lambda (lst)
(cond
((null? lst) 0)
((atom? lst) 1)
(else (+ (mylength (car lst))
(mylength (cdr lst))))
)))
请注意,这意味着嵌套的空列表不会增加长度。
(mylength '(1 () 3))
将是2
,而不是3
。