Skip to content

Instantly share code, notes, and snippets.

@paaloeye
Created June 26, 2014 19:07
Show Gist options
  • Save paaloeye/0e0fb786c0bd44885493 to your computer and use it in GitHub Desktop.
Save paaloeye/0e0fb786c0bd44885493 to your computer and use it in GitHub Desktop.
Three version of Fibonacci sequence
(defn fib-1 [n]
(if (< n 3)
1
(+ (fib-1 (- n 1))
(fib-1 (- n 2)))))
(defn fib-2 [n]
(let [ lazy-fib ((fn lazy-gen [n1 n2]
(cons (+ n1 n2)
(lazy-seq
(lazy-gen n2 (+ n1 n2))))) 1 1)
fib (fn [n]
(if (< n 3)
1
(nth lazy-fib (- n 3))
))]
(fib n)))
(defn fib-3 [n]
(let [seq (loop [i 3
state [1 1 3]]
(if (< n 4)
(take n state)
(if (< i n)
(recur (inc i)
(conj state (+ (nth state (- i 1))
(nth state (- i 2))
)))
state)))]
(last seq)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment