Вот, накидал. Самому интересно стало :-) -
https://repl.it/@AlexeyCheremisi/DelightfulValuabl...
И да, не ругайте строго! Это мой первый код на этом языке, и кажется, не последний :-)
PS. Немного облагородил через let т привел возвращаемое к vector, как в вопросе!
;; my recursion function
(defn func [inp]
(loop [ acc [] [cnt & rest] inp ] ;; accumulator, counter from rest, rest
(let [head (take cnt rest) tail (drop cnt rest)] ;; get portion of data to head, get tail of data
(if (= (count rest) 0) acc ;; return accumulator if no data
(recur (conj acc (into [] head)) tail))))) ;; loop with convert list to vector
;; input data
(def indata [3 4 0 2 1 2 2 4 5])
;; test recursion
(func indata) ;; => [[4 0 2] [2] [4 5]]