Skip to content

Instantly share code, notes, and snippets.

@tioover
Last active January 1, 2016 17:49
Show Gist options
  • Save tioover/8179241 to your computer and use it in GitHub Desktop.
Save tioover/8179241 to your computer and use it in GitHub Desktop.
(define (fib n)
(fib-iter 1 0 0 1 n))
(define (fib-iter a b p q count)
(define (square n) (* n n))
(cond ((= count 0) b)
((even? count)
(fib-iter
a
b
(+ (square p) (square q))
(+ (* 2 p q) (square q))
(/ count 2)))
(else
(fib-iter
(+ (* b q) (* a q) (* a p))
(+ (* b p) (* a q))
p
q
(- count 1)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment