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
相关产品推荐
相关产品推荐

