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 .....)) 这样的代码。
执行结果没有问题。最终能写出第二版&#