Racket Corecursion不';不要在零钱后终止

Racket Corecursion不';不要在零钱后终止,racket,fractals,corecursion,Racket,Fractals,Corecursion,我在Racket中编写了一个函数来生成类似于以下分形的东西 (定义截止线5) (定义圆形模式“轮廓”) (定义(圆形分形大小颜色) (本地[(定义整圆(圆尺寸圆模式颜色))] (cond[(在第一个版本中(圆形分形(/size 2)颜色)仅当大小>截止值时才进行计算。在第二个版本中,它被调用,与大小无关。这样,您就失去了递归基本情况 尝试: (定义(圆形分形大小颜色) (定义整圆(圆尺寸圆模式颜色)) (cond[(注意:如果您使用的是教学语言,请按原样添加local(记住在以后的问题中指定哪

我在Racket中编写了一个函数来生成类似于以下分形的东西

(定义截止线5)
(定义圆形模式“轮廓”)
(定义(圆形分形大小颜色)
(本地[(定义整圆(圆尺寸圆模式颜色))]

(cond[(在第一个版本中
(圆形分形(/size 2)颜色)
仅当
大小>截止值
时才进行计算。在第二个版本中,它被调用,与大小无关。这样,您就失去了递归基本情况

尝试:

(定义(圆形分形大小颜色)
(定义整圆(圆尺寸圆模式颜色))

(cond[(注意:如果您使用的是教学语言,请按原样添加
local
(记住在以后的问题中指定哪种语言)。在全拍中,
local
永远不会被使用。谢谢!我使用的是教学语言。我会记得下次指定。它也是
大小,欢迎您。关于条件…您的代码在
else
子句中,所以当
大小的相反值时会对其进行评估。我明白您的意思。谢谢!
(define CUT-OFF 5)
(define CIRCLE-MODE "outline")

(define (circle-fractal size colour)
  (local [(define full-circle (circle size CIRCLE-MODE colour))]

    (cond [(<= size CUT-OFF) full-circle]
          [else
           (overlay/align "middle" "middle" 
                          full-circle
                          (beside (circle-fractal (/ size 2) colour)
                                  (circle-fractal (/ size 2) colour)))])))
(define (circle-fractal size colour)
  (local [(define full-circle (circle size CIRCLE-MODE colour))
          (define half-circle (circle-fractal (/ size 2) colour))]

    (cond [(<= size CUT-OFF) full-circle]
          [else
           (overlay/align "middle" "middle" 
                          full-circle
                          (beside half-circle half-circle))])))