суббота, 25 июля 2009 г.

sicp ex 1.19

sicp - Structure and Organisation of Computer Programms
буду писать здесь всякие замечания по поводу заданий из этой книги

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

интересно, что время вычисления этим способом по сравнению с итеративным, хоть и меньше раз в 15, но растет с той же скоростью. Т.е. на самом деле логарифмическое время получить не удалось(оно скорее квадратичное)
мои результаты:
n  , итеративный процесс , "логарифмический", отношение
1e5, 1.559 , .080 , 19.5
1e6, 129.96 , 8.39 , 16.1
2e6, 508.92 , 35.23 , 14.5

для подсчетов использовал (runtime)

P.S. это на MIT Scheme

Комментариев нет:

Отправить комментарий