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

如何在Scheme中编写函数统计列表内可整除指定数值的元素个数

Scheme numDivisors 函数实现修正方案

现有代码问题

  • 硬编码了固定数值10做整除判断,没有使用传入的参数,无法适配任意输入的n
  • 条件分支缺失,没有处理「当前元素不符合要求」的场景,运行时会出现无返回值报错
  • 数值相等判断用eq?不严谨,Scheme中数值相等判断推荐使用=

正确实现代码

(define numDivisors
  (lambda (n listOfNums)
    (cond
      ((null? listOfNums) 0)
      ((= (remainder n (car listOfNums)) 0)
       (+ 1 (numDivisors n (cdr listOfNums))))
      (else (numDivisors n (cdr listOfNums))))))

功能验证

调用示例 (numDivisors 10 '(1 20 30 2 5 40 10 60)) 运行结果为4,和预期一致。

如果需要兼容列表可能出现0的场景,避免除零错误,可以增加非零判断:

(define numDivisors
  (lambda (n listOfNums)
    (cond
      ((null? listOfNums) 0)
      ((and (not (= (car listOfNums) 0)) (= (remainder n (car listOfNums)) 0))
       (+ 1 (numDivisors n (cdr listOfNums))))
      (else (numDivisors n (cdr listOfNums))))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:24:04