如何在方案中使用递归来堆叠形状?

时间:2013-09-15 05:31:53

标签: recursion scheme shapes

我正在尝试使用递归来堆叠我之前创建的基本形状(y)x次。

(define stack-copies-of
   (lambda (x y)
     (if zero? x) 
         null
         (if > x 0) 
             (stack-copies-of (- x 1))))

如何让它继续显示彼此之上的形状然后停在0?

1 个答案:

答案 0 :(得分:0)

如果通过“堆叠基本形状”意味着使用递归构建堆栈(列表),那么这将适合您:

(define stack-copies-of
  ; y is a shape, x is a number of shapes
  (lambda (x y)
    ; for zero or negative number of shapes, return the empty list
    (if (<= x 0) '()
    ; for more than zero shapes, use recursion to build a list
                 (cons y (stack-copies-of (sub1 x)))
    )))

如果您希望在屏幕上使用实际显示形状,则需要进一步说明。