recursive process로
(define (f n)
(cond ((< n 3) n)
(else (+ (f (- n 1))
(* 2 (f (- n 2)))
(* 3 (f (- n 3)))))))
iterative process로
(define (f n)
(cond ((< n 3) n)
(else (f-iter 0 1 2 n))))
(define (f-iter a b c count)
(cond ((= 2 count) c)
(else (f-iter b c (+ (* 3 a) (* 2 b) c) (- count 1)))))
iterative process를 블록구조화
(define (f n)
(define (f-iter a b c count)
(cond ((= 2 count) c)
(else (f-iter b c (+ (* 3 a) (* 2 b) c) (- count 1)))))
(cond ((< n 3) n)
(else (f-iter 0 1 2 n))))
정오표 참조 전의 답
recursive process로
(define (f n)
(cond ((< n 3) n)
(else (+ (- n 1)
(* 2 (f (- n 2)))
(* 3 (f (- n 3)))))))
iterative process로
(define (f n)
(cond ((< n 3) n)
(else (f-iter 0 1 2 3 n))))
(define (f-iter a b c count mxcount)
(cond ((= (+ mxcount 1) count) c)
(else (f-iter b c (+ (* 3 a) (* 2 b) (- count 1)) (+ count 1) mxcount))))
iterative process를 블록구조화
(define (f n)
(define (f-iter a b c count mxcount)
(cond ((= (+ mxcount 1) count) c)
(else (f-iter b c (+ (* 3 a) (* 2 b) (- count 1)) (+ count 1) mxcount))))
(cond ((< n 3) n)
(else (f-iter 0 1 2 3 n))))