1.1.9_fib再度优化

secje posted @ 2010年5月09日 02:32 in sicp , 664 阅读

 

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

 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter