Skip to content

Instantly share code, notes, and snippets.

@lagenorhynque
Last active September 22, 2016 23:39
Show Gist options
  • Save lagenorhynque/c6bc2b5140093609e6f6ece568120782 to your computer and use it in GitHub Desktop.
Save lagenorhynque/c6bc2b5140093609e6f6ece568120782 to your computer and use it in GitHub Desktop.
;;;; cf. http://riktor.hatenablog.com/entry/2012/07/20/224806
(defn fib [n]
(if (or (= n 0) (= n 1))
1
(+ (fib (- n 1))
(fib (- n 2)))))
(let [memo (atom {})]
(defn fib-memoized [n]
(if-let [m (get @memo n)]
m
(if (or (= n 0) (= n 1))
1
(let [m (+ (fib-memoized (- n 1))
(fib-memoized (- n 2)))]
(swap! memo assoc n m)
m)))))
(defn fib-loop [n]
(loop [i n
a 1
b 0]
(if (zero? i)
a
(recur (dec i)
(+ a b)
a))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment