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

12 lines
328 B
Clojure

(defn fib [n]
(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))))