, , , , .
, , '(1 1). Clojure iterate , :
user> (doc iterate)
-------------------------
clojure.core/iterate
([f x])
Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects
, -, , , .
(fn [[x y & _ :as all]] (cons (+ x y) all))
, x y , , , , _, , , all.
iterate , -, ; .
(defn fib [n]
(nth (iterate (fn [[x y & _ :as all]] (cons (+ x y) all)) '(1 1)) (- n 2)))
, ; , reverse, .
: , , , :
(defn fib [n]
(nth (iterate (fn [all]
(conj all (->> all (take-last 2) (apply +)))) [1 1])
(- n 2)))