You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scheme高阶函数filter实现count-zeros过程统计列表中0的数量

Scheme count-zeros 实现修正

错误点说明

  • 你编写的count-zeros函数存在参数传递错误:length lst返回的是列表长度的数值,而你自定义的filter函数要求第二个参数为待过滤的列表,类型不匹配导致代码无法运行。
  • 逻辑顺序颠倒:你的核心思路是正确的,即先筛选所有0再统计数量,只需要调整执行顺序即可。

修正后完整代码

(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)
  ; 先过滤出列表中所有为0的元素,再统计过滤结果的长度
  (length (filter zero? lst)))

运行验证

调用示例 (count-zeros '(1 1 0 1 0 0)) ,返回结果为3,符合预期。

内容的提问来源于stack exchange,提问作者ivanka georgieva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:54:02