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

Racket递归绘制彩虹形状函数仅输出Empty List问题求助

问题原因

你的代码存在两个核心问题导致无法输出预期图形:

  1. Racket 中函数的返回值为分支内最后一个表达式的执行结果,你在else分支中生成的circle图形没有被保存或返回,直接被丢弃,递归执行到最后只会返回基础 case 的"Empty List"字符串。
  2. 你没有将逐个生成的图形按顺序拼接,即使返回单个图形也无法一次性展示所有颜色的图形。
修复后可运行代码
#lang slideshow
(require 2htdp/image)

(define a (list "red" "Orange" "Yellow" "Green" "Blue" "Purple"))

(define (Rainbow lst)
  (cond
   [(empty? lst) empty-image] ; 空列表返回空图形作为拼接基底
   [else 
    ; 横向拼接当前颜色的圆与后续递归生成的图形
    (beside (circle 20 "solid" (first lst))
            (Rainbow (rest lst)))]))

; 空列表时输出提示,非空输出拼接完成的图形
(if (empty? a)
    "Empty List"
    (Rainbow a))
可选调整项
  • 如需竖向排列图形,将拼接函数beside替换为above即可
  • 如需图形之间增加间隙,可在拼接逻辑中插入空隙图形,示例:(beside (circle 20 "solid" (first lst)) (rectangle 10 0 "solid" "white") (Rainbow (rest lst)))可实现圆形之间增加10像素的横向间隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:06