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

Racket语言append-longer-string函数输出异常,求修正方案

问题排查与修正

问题原因

你当前的函数逻辑是当第一个参数str1更长或与第二个参数str2等长时,将str1放在前面拼接;仅当str1更短时,才把str2放在前面。

调用时传入的str1是"second"(长度6),str2是"first"(长度5),满足str1更长的条件,因此执行(string-append str1 str2),得到"secondfirst",和你的期望不符。

你的需求是将较短的字符串放在前面,较长的字符串放在后面(即把更长的字符串追加到较短的后面),所以逻辑需要调整。

修正后的函数

(define (append-longer-string str1 str2)
  (if (> (string-length str1) (string-length str2))
      (string-append str2 str1)  ; str1更长,把短的str2放前面、长的str1放后面
      (if (= (string-length str1) (string-length str2))
          (string-append str1 str2)  ; 长度相等时保持原逻辑(可按需调整)
          (string-append str1 str2))))  ; str2更长,把短的str1放前面、长的str2放后面

验证调用

执行你的调用代码:

(with-output-to-file "output"
                     (lambda ()
                       (print (append-longer-string "second" "first"))))

此时输出文件output中的内容会是"firstsecond",符合你的期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:05:47