SICP, 1.11

(define (tribo n)
  (if (< n 3)
      n
      (+ (tribo (- n 1))
     (* 2 (tribo (- n 2)))
     (* 3 (tribo (- n 3))))))
;Value: tribo

(tribo 20)
;Value: 10771211

(define (tribo2 n)
  (define (tribo-iter a b c count)
    (if (= count 0)
    a
    (tribo-iter b
            c
            (+ c (* 2 b) (* 3 a))
            (- count 1))))
  (tribo-iter 0 1 2 n))
;Value: tribo2

(tribo 1)
;Value: 1

(tribo 2)
;Value: 2

(tribo 0)
;Value: 0

(tribo 3)
;Value: 4

(tribo 4)
;Value: 11

(tribo2 0)
;Value: 0

(tribo2 1)
;Value: 1

(tribo2 2)
;Value: 2

(tribo2 3)
;Value: 4

(tribo 10)
;Value: 1892

(tribo2 10)
;Value: 1892

(tribo 30)
;Quit!

(tribo 20)
;Value: 10771211

(tribo2 20)
;Value: 10771211


----

생각보다 어려웠다. 역시 리커시브는 오묘해.

by 나젤큐스 | 2008/07/22 19:42 | 트랙백 | 덧글(0)

트랙백 주소 : http://nijelprim.egloos.com/tb/1988295
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶