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

如何在Scheme(Racket)中无递归使用map处理列表的列表

非递归实现Scheme(Racket)中嵌套列表的map功能

你需要实现对嵌套列表(列表的列表)中的每个原子元素应用指定函数,同时保留列表结构。既然已经掌握递归实现,这里给出完全依赖内置map的非递归方案:

非递归实现代码

(define (map-lists f A)
  (map (lambda (x)
         (cond
           [(pair? x) (map f x)]
           [(null? x) x]
           [else (f x)]))
       A))

逻辑说明

  • 外层map负责遍历输入列表A的每一个元素
  • 对于每个元素x:
    • 如果x是子列表(通过pair?判断),就用内层map对这个子列表的所有元素应用函数f
    • 如果x是空列表,直接保留原结构
    • 如果x是原子元素,直接对其应用函数f

测试验证

调用示例:

(map-lists add1 '((3 1) (2 8)))

输出结果:

'((4 2) (3 9))

这个方案完全利用Racket内置的map替代手动递归,逻辑和你提供的递归版本完全一致,同时满足非递归的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:23:15