在球拍中复制特定次数的东西

时间:2017-04-05 01:56:54

标签: loops for-loop recursion racket repeat

我试图编写一个带有短语和数字(n)的程序,并返回一个包含重复n次的短语的列表。 到目前为止我看到的是这样,但它显然只重复了两次这个短语:

(define (duplicate num phrase)
  (list phrase phrase))

所需输入/输出的示例 :(重复3' Hello)生成'(Hello Hello Hello)。有没有办法做到这一点递归

感谢先进的任何帮助!!

1 个答案:

答案 0 :(得分:0)

您想要的功能正是make-list

> (make-list 3 'Hello)
'(Hello Hello Hello)

但是既然你要求一个递归函数,你可以用标准方式写出一个。

(define (duplicate num phrase)
  (cond
    [(zero? num) empty]
    [else (cons phrase (duplicate (sub1 num) phrase))]))

你还用for-loop标记了这个,所以这是一个使用for/list的版本。

(define (duplicate num phrase)
  (for/list ([num num])
    phrase))