我正在尝试使用给定数量的字符串创建列表。因此,如果我输入(make-row 3)它将是'(“常春藤”“常春藤”“常春藤”)并且如果我输入(make-row 2)它将是'(“常春藤”“常春藤”。
我目前有以下代码但不起作用:
(define (make-row a)
(cond
((= 0 a) '())
(else
(list "ivory")
(make-row (- a 1)))))
您能否告诉我如何编写此代码或我做错了什么?我正在学习如何在家中使用Typed / Racket进行编程,因此无法接触教师或导师:(
答案 0 :(得分:1)
只需使用其中一个内置程序:
(define (make-row a)
(make-list a "ivory"))
但是,如果您想从头开始,请使用标准模板通过cons
结果构建输出列表。请注意,由于(list "ivory")
处于中间位置,您的代码将无法正常工作 - 只返回条件的最后一个表达式,无论如何,这不是我们递归构建列表的方式。试试这个:
(define (make-row a)
(cond ((= 0 a) '())
(else (cons "ivory" (make-row (- a 1))))))
无论哪种方式,它都按预期工作:
(make-row 3)
=> '("ivory" "ivory" "ivory")