RosettaCodeData/Task/Fibonacci-sequence/Clojure/fibonacci-sequence-7.clj

12 lines
328 B
Clojure
Raw Permalink Normal View History

2015-02-20 00:35:01 -05:00
(defn fib [n]
2019-09-12 10:33:56 -07:00
(letfn [(fib* [n]
(if (zero? n)
[0 1]
(let [[a b] (fib* (quot n 2))
c (*' a (-' (*' 2 b) a))
d (+' (*' b b) (*' a a))]
(if (even? n)
[c d]
[d (+' c d)]))))]
(first (fib* n))))