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

Scheme中如何实现支持不等长列表的map2过程

你只需要调整递归终止条件即可,把原来仅判断items1为空的逻辑,改为任意一个列表为空时就终止递归返回空列表,就能适配两个列表不等长的场景,自动取最短列表的长度生成结果。

修改后的完整代码如下:

(define (map2 proc items1 items2)
  (if (or (null? items1) (null? items2))
      '()
      (cons (proc (car items1) (car items2))
            (map2 proc (cdr items1) (cdr items2)))))

用你给出的示例测试,调用(map2 + '(1 2 3 4) '(3 4 5))即可返回预期结果(4 6 8),执行逻辑如下:

  • 第一次递归:两个列表都非空,计算1+3=4,继续递归处理(2 3 4)和(4 5)
  • 第二次递归:两个列表都非空,计算2+4=6,继续递归处理(3 4)和(5)
  • 第三次递归:两个列表都非空,计算3+5=8,继续递归处理(4)和()
  • 第四次递归:items2为空,直接返回空列表,上层拼接所有计算结果后得到最终输出

注:你示例中写的调用函数名maps2是笔误,实际调用时和定义的map2保持一致即可。

内容的提问来源于stack exchange,提问作者N.A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:39:03