对数步骤斐波那契数

以前看这个的时候,被T变换啥的这些名字给搞晕了。
今天拿起笔好好的做了一下运算,直接得到了p->p'和q-q'的方程。
以前数学没学好。。。书到用时方恨少
(define (fib n)
  (define (fib-iter a b p q count)
    (define (tp p q)
      (+ (* p p) (* q q)))
    (define (tq p q)
      (+ (* 2 p q) (* q q)))
    (cond ((= count 0 ) b)
          ((even? count)
           (fib-iter a b (tp p q) (tq 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))

你可能感兴趣的:(Scheme)