2.29题目没有理解,暂时没有做出来,先把2.30做了

上代码
(defn square [x](* x x))
;第一版,直接定义
(defn square-tree[tree]
  (cond (not (seq? tree)) (square tree)
       (empty? tree) nil
       :else (cons (square-tree (first tree))  (square-tree (rest tree))
        )
  )
)
;使用map 版,这版费时最多,因为想多了
(defn square-tree2 [tree]
    (cond (not (seq? tree)) (square tree)
          (empty? tree) nil
          :else (map  square-tree2 tree )
      )            
  ) 
使用map版写的很费劲,主要是协调不好外层函数用map的关系,没有深刻理解map的返回内容。
导致写了很多额外的代码,代码写出来,看上去居然和第一版没区别。只知道map是迭代遍历元素,没想map会返回什么,因此用了(cons (map .....)) 这样的代码。

执行结果没有问题。最终能写出第二版&#



















