【发布时间】:2021-09-28 09:09:09
【问题描述】:
使用“过滤器”,我需要编写一个代码来创建一个名为 (count-zeros lst) 的过程,该过程计算一个数字中有多少个 0。样本输出: (count-zeros '(1 1 0 1 0 0)) 应该给出 3
(define filter (lambda (pred a-list)
(if (null? a-list)
'()
(if (pred (car a-list))
(cons (car a-list) (filter pred (cdr a-list)))
(filter pred (cdr a-list))))))
(define (count-zeros lst)
(filter zero? (length lst)))
我知道逻辑是正确的,但我在实现和使代码正常工作方面遇到了麻烦。请帮助我改进代码。
【问题讨论】:
-
旁注:在真实的 Racket 代码中,您可以使用
count:(count (lambda (n) (= n 0)) a-list)