简单递归函数-接受字符串并返回n次



编写一个递归函数(string* str n),接受两个参数:字符串x和非负整数n。非负整数归纳定义为:编号::= 0|数字+ 1string*返回一个由n个str组成的字符串。例如:

> (string* "Eugene" 3)
"EugeneEugeneEugene"

您将需要使用Racket的string-append函数。请记住,在非负整数上重复出现时,基数是0。

到目前为止,我已经试过了:

(define string*
(lambda (x n)
(if (null? x)
'""
(if (zero? n)
(string* (string-append x x)
(sub1 n))))))

但是我似乎不知道如何结束递归并打印最后的字符串。

  1. Null?空列表返回#true。这里不使用列表,所以不需要它。
  2. 基本情况是n = 0,它返回""(空字符串)。它的谓词是0 ?或(= n 0).
  3. 在其他情况下,将字符串和递归调用的结果附加在一起。
(define string*
(lambda (str n)
(if (zero? n) ""
(string-append str
(string* str (sub1 n))))))

> (string* "Eugene" 3)->"EugeneEugeneEugene"

相关内容

最新更新