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

Racket禁用make-list时如何实现按索引重复元素的expand函数

Racket Beginning Student环境下expand函数实现

实现思路

  • 先自定义元素重复的辅助函数,替代被禁用的make-list功能
  • 主函数通过带重复次数累加器的递归遍历原列表,生成目标嵌套列表

完整代码

; 辅助函数:将元素x重复n次,返回生成的列表
(define (repeat-n x n)
  (cond
    [(zero? n) empty]
    [else (cons x (repeat-n x (- n 1)))]))

; 内部递归辅助函数:跟踪当前位置需要重复的次数
(define (expand-helper lst current-count)
  (cond
    [(empty? lst) empty]
    [else (cons (repeat-n (first lst) current-count)
                (expand-helper (rest lst) (+ current-count 1)))]))

; 对外暴露的主函数
(define (expand lst)
  (expand-helper lst 1))

调用验证

测试输入:
(expand (list "a" "b" "c"))
返回结果:
(list (list "a") (list "b" "b") (list "c" "c" "c"))


逻辑说明

  • repeat-n用基础递归实现重复逻辑:次数为0时返回空列表,否则每次将目标元素追加到少一次的重复结果前
  • expand-helper额外携带current-count参数记录当前位置需要重复的次数,初始调用时传入1(对应原列表索引0的元素重复1次),每处理一个元素就把次数加1
  • 全部语法符合Beginning Student环境规范,没有用到任何禁用内置函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:05