2023-07-01 11:58:00 -04:00
|
|
|
(def ! (memoize #(apply * (range 1 (inc %)))))
|
|
|
|
|
|
|
|
|
|
(defn catalan-numbers-direct []
|
|
|
|
|
(map #(/ (! (* 2 %))
|
2026-04-30 12:34:36 -04:00
|
|
|
(* (! (inc %)) (! %))) (range)))
|
2023-07-01 11:58:00 -04:00
|
|
|
|
|
|
|
|
(def catalan-numbers-recursive
|
|
|
|
|
#(->> [1 1] ; [c0 n1]
|
2026-04-30 12:34:36 -04:00
|
|
|
(iterate (fn [[c n]]
|
|
|
|
|
[(* 2 (dec (* 2 n)) (/ (inc n)) c) (inc n)]) ,)
|
|
|
|
|
(map first ,)))
|
2023-07-01 11:58:00 -04:00
|
|
|
|
|
|
|
|
user> (take 15 (catalan-numbers-direct))
|
|
|
|
|
(1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440)
|
|
|
|
|
|
|
|
|
|
user> (take 15 (catalan-numbers-recursive))
|
|
|
|
|
(1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440)
|