据我所知,在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,蹦床也是一个有趣的功能,尽管在这里并不直接适用。 –