Я пытаюсь понять приведенную ниже программу, чтобы найти ряд Фибоначчи, используя рекурсию в Clojure.
(defn fib
[x]
(loop [i '(1 0)]
(println i)
(if (= x (count i))
(reverse i)
(recur
(conj i (apply + (take 2 i))))))) // This line is not clear
Например, для вызова fib(4)
Я получаю следующий вывод:
(1 0)
(1 1 0)
(2 1 1 0)
(0 1 1 2)
Что, согласно моему заключению, conj
, кажется, добавляет значение (apply + (take 2 i))
к началу i
.Но это не поведение conj
.Может кто-нибудь помочь мне понять, как именно это работает?