我想在不使用reverse函数的情况下反转Clojure中的序列,并以递归方式执行此操作.
这是我想出的:
(defn reverse-recursively [coll]
(loop [r (rest coll)
acc (conj () (first coll))]
(if (= (count r) 0)
acc
(recur (rest r) (conj acc (first r))))))
Run Code Online (Sandbox Code Playgroud)
样本输出:
user> (reverse-recursively '(1 2 3 4 5 6))
(6 5 4 3 2 1)
user> (reverse-recursively [1 2 3 4 5 6])
(6 5 4 3 2 1)
user> (reverse-recursively {:a 1 :b 2 :c 3})
([:c 3] [:b 2] [:a 1])
Run Code Online (Sandbox Code Playgroud)
问题:
参考文献:
http://groups.google.com/group/clojure/browse_thread/thread/4e7a4bfb0d71a508?pli=1