2008. 3. 4.

연습문제 1.19

Tpq^2를 구해보자..

a <- bq + aq + ap 이고 b <- bp + aq 이므로

(bp + aq)q + (bq + aq + ap)q + (bq + aq + ap)p
= bpq + aqq + bqq + aqq + apq + bpq + apq + app
= (2pq + qq)b + (2pq + qq)a + (pp + qq)a

(bp + aq)p + (bq + aq + ap)q
= bpp + apq + bqq + aqq + apq
= (pp + qq)b + (2pq + qq)a

가 된다.

따라서 p' = pp + qq이고 q' = 2pq + qq가 된다.

정의한 빈곳을 모두 채우면

(define (fib n)
  (fib-iter 1 0 0 1 n ))

(define (fib-iter a b p q count)
  (cond ((= count 0 ) b)
        ((even? count)
         (fib-iter a
                   b
                   (+ (* p p) (* q q))
                   (+ (* 2 p q) (* q q))
                   (/ count 2)))
        (else (fib-iter (+ (* b q) (* a q) (* a p))
                        (+ (* b p) (* a q))
                        p
                        q
                        (- count 1)))))


댓글 없음:

댓글 쓰기