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

Scheme嵌套列表求和函数计算异常及合约错误问题求助

解决嵌套列表元素求和的Scheme程序问题

你的代码核心问题是处理嵌套子列表时,只递归计算了子列表的和,却没有将这个结果与原列表剩余元素的和相加,导致后续元素被忽略。同时null?的终止条件必须保留,否则递归到空列表时调用car会触发合约违反错误。

修正后的代码

(define (adder a_list)
  (cond
    ((null? a_list) 0)
    ((list? (car a_list)) (+ (adder (car a_list)) (adder (cdr a_list))))
    (else (+ (car a_list) (adder (cdr a_list))))
  )
)

关键修改说明

  • 第二个条件分支中,将原有的(adder (car a_list))改为(+ (adder (car a_list)) (adder (cdr a_list))):这样既递归计算当前子列表的元素和,也会继续处理原列表中cdr部分的剩余元素,确保所有元素都被累加。
  • 保留((null? a_list) 0)作为递归终止条件:当列表处理到空时返回0,这是递归求和的基础终止逻辑,避免对空列表调用car引发错误。

测试验证

运行(adder '(2 (5 4) 6))时,计算过程为:2 + (5+4) +6 = 2+9+6=17,与预期结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:20:28