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

Beginning Student环境下列表转单个字符串的递归实现方案

Racket BSL 受限环境下列表转字符串解法

1 字符列表转单个字符串

实现思路

先递归计算字符列表的总长度,再使用BSL内置的build-string函数,按索引从字符列表中依次取出对应字符,填充生成目标字符串,全程不触发禁用函数限制。

实现代码

;; 计算列表长度
(define (list-length lst)
  (cond
    [(empty? lst) 0]
    [else (+ 1 (list-length (rest lst)))]))

;; 取列表第idx位元素(索引从0开始计数)
(define (list-get lst idx)
  (cond
    [(= idx 0) (first lst)]
    [else (list-get (rest lst) (- idx 1))]))

;; 字符列表转字符串主函数
(define (char-list->string char-lst)
  (build-string (list-length char-lst)
                (lambda (i) (list-get char-lst i))))

调用示例

输入:(char-list->string (cons #\C (cons #\O (cons #\M (cons #\P (cons #\U (cons #\T (cons #\E empty))))))))
输出:"COMPUTE"

2 字符串列表转单个字符串

实现思路

先自定义函数将单个字符串转换为字符列表(避开禁用的explode),再递归拼接所有字符串对应的字符列表得到总字符列表,最后复用上面的char-list->string函数得到最终结果。

实现代码

;; 辅助函数:将字符串从索引i开始转换为字符列表
(define (string->char-list-helper s i)
  (cond
    [(= i (string-length s)) empty]
    [else (cons (string-ref s i)
                (string->char-list-helper s (+ i 1)))]))

;; 单个字符串转字符列表
(define (string->char-list s)
  (string->char-list-helper s 0))

;; 字符串列表转总字符列表
(define (str-list->total-char-list str-lst)
  (cond
    [(empty? str-lst) empty]
    [else (append (string->char-list (first str-lst))
                  (str-list->total-char-list (rest str-lst)))]))

;; 字符串列表转字符串主函数
(define (str-list->string str-lst)
  (char-list->string (str-list->total-char-list str-lst)))

调用示例

输入:(str-list->string (list "COM" "PUT" "E"))
输出:"COMPUTE"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:03