设计一个名为 string-dup 的程序,它使用一个字符串 s 和一个数字 n 并返回一个由 s n 次连接而成的字符串,每个 s 实例之间有空格,即
(string-dup "a" 3) => "a a a"
不使用复制,但我想我们可以使用字符串追加。
到目前为止我得到了
(define (string-dup s n)
(cond
[(zero? n) ""]
[else
(cond
[(= n 1 ) s]
[(> n 1 )(string-dup (string-append s " ") (sub1 n))])]))
然而,这只允许我有一个字符串“a”。我知道在列表情况下你什么时候可以做
(cons s (string-cp s (sub1 n)))
但这种情况下该如何申请呢?谢谢。
递归调用string-dup
需要是一个参数string-append
,而不是相反。这是一个更正(和重构)的版本:
(define (string-dup s n)
(cond
[(< n 1) ""]
[(= n 1) s]
[else (string-append s " " (string-dup s (sub1 n)))]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)