무냐의 개발일지

[OSSU] <UBCx HtC1x_How to Code> / 9a_Generative Recursion (재귀함수) 본문

OSSU_CS coursework

[OSSU] <UBCx HtC1x_How to Code> / 9a_Generative Recursion (재귀함수)

무냐코드 2024. 5. 10. 15:30

 

alwyas start with the base case !!! 

 

 

 

엄청 작은 CUTOFF 사이즈에 도달할때까지 반복한다 

 

                                                             
(check-expect (ssqr CUTOFF) (square CUTOFF "outline" "red"))
(check-expect (ssqr (* 3 CUTOFF))
              (overlay (square (* 3 CUTOFF) "outline" "red")
                             (local [(define sub (square CUTOFF "outline" "red"))
                                     (define BLANK (square CUTOFF "solid" "white"))]
                               (above (beside sub sub sub)
                                      (beside sub BLANK sub)
                                      (beside sub sub sub)))))
                              


;(define (ssqr s) (square CUTOFF "solid" "white"))  ; stub

(define (ssqr s)
  (cond [(<= s CUTOFF) (square s "outline" "red")] ;; No recursion 
        [else
         (overlay (square s "outline" "red")
                        (local [(define sub (ssqr (/ s 3)))  ; Recursion !! 
                                (define BLANK (square (/ s 3) "solid" "white"))]
                          (above (beside sub sub sub)
                                 (beside sub BLANK sub)
                                 (beside sub sub sub))))]))

                                 
#처음에 잘 안돼서 align을 추가했는데, 필요없었음
 (overlay/align "left" "top"
                        (square s "outline" "red")
                        (local [(define sub (ssqr (/ s 3)))
                                (define BLANK (square (/ s 3) "solid" "white"))]
                          (above (beside sub sub sub)
                                 (beside sub BLANK sub)
                                 (beside sub sub sub))))]))

 

 

 

 

 

 

| P1