首页 > 代码库 > SICP 1.19
SICP 1.19
解:这道题很有意思,结论是斐波那契数也可以用对数时间复杂度获得。
通过Tpq(Tpq)=TPQ建立方程,解得:
P=pp+qq
Q=qq+2pq
程序如下:
(define (fib n) (define (even? n) (= (remainder n 2) 0)) (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))
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。