據我所知,在Clojure中遞歸而不使用循環.. recur語法對於短序列可能不是問題。但是,使用循環.. recur語法是編寫遞歸函數的首選方法。所以,我想從首選的方法開始。轉換爲循環...遞歸遞歸
然而,我一直在努力這個函數轉換[編輯],它返回序列的骨架(序列結構,而沒有它的值)
(defn skl
[tree]
(map skl (filter seq? tree)))
與此數據測試
(def test_data1 '(1 (2 3) () (()) :a))
(def test_data2 '(1 2 (3 4) (5 (6 7 8))))
循環..重複語法。任何想法或指針的例子將不勝感激。
謝謝。你指的是Clojure.zip,對吧?我知道它,會使用它,並希望沒有這個練習。 – octopusgrabbus
除了loop-recur,蹦牀也是一個有趣的功能,儘管在這裏並不直接適用。 –