高速Fibonacci数の計算
これを使ってFibonacci数の計算を高速に行うことができる.
(define (fib n) (fib-iter 1 0 0 1 n)) (define (fib-iter a b p q count) (cond ((= count 0) b) ((even? count);偶数だったら2回分の変換を1回で (fib-iter a b (+ (* p p) (* q q));p' (+ (* q q) (* 2 p q));q' (/ count 2))) (else;奇数だったら素直に1回分の変換 (fib-iter (+ (* b q) (* a q) (* a p)) (+ (* b p) (* a q)) p q (- count 1)))))