; ex 1.11
(define (f1_11 n)
(cond ((< n 3) n)
(else (+
(f1_11 (- n 1))
(* 2 (f1_11 (- n 2)))
(* 3 (f1_11 (- n 3)))))))
반복(Iteration)형태의 문제는 초기조건, 반복조건, 반복 수를 명시해야하는 것을 명심해야한다.
여기서는 계산이 불가능한 f(0), f(1), f(2)를 모두 넣어두었다.
사실 이 방법보다도 좀 더 효율적인 방법이 있을 것이라고 생각은 드는데..
(define (f1_11_iter n)
(define (iter a0 a1 a2 t)
(cond ((= t 0) a0)
((= t 1) a1)
((= t 2) a2)
(else
(iter a1 a2 (+ a2 (* 2 a1) (* 3 a0)) (- t 1)))))
(iter 0 1 2 n))
명확한 답은 안떠오른다... 난감.. ㅡ.ㅡ

댓글 없음:
댓글 쓰기