SICPの宿題
問題1.19
Tをn回作用させた時のa, bをとするとは
となる。
さらに、もう一回Tを作用させたときは
これから
とすると、を2回作用させるのは、を1回作用させるのと同じになる。
(define (square x) (* x x)) (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 (+ (square p) (square q)) ;; p' (+ (* 2 p q) (square q)) ;; q' (/ count 2))] [else (fib-iter (+ (* b q) (* a q) (* a p)) (+ (* b p) (* a q)) p q (- count 1))]))
実行結果
gosh> (fib 3) 2 gosh> (fib 4) 3 gosh> (fib 5) 5 gosh> (fib 6) 8 gosh> (fib 7) 13 gosh> (fib 8) 21