我需要开发一个名为bounds的函数,它将一个嵌套的数字列表作为唯一的参数(即:一棵树)。 Bounds应该返回树中最大和最小的值。 例如:= =(界限'(1(-2 17(4)-8(-6 13)( - 8 17) 我有一个简短的版本使用apply max apply min并且展平我只是无法理解它
使用clojure
答案 0 :(得分:1)
您需要flatten
功能:
(defn bounds
[& args]
(let [flat-vals (flatten args) ] ;=> (1 -2 17 4 -8 -6 13)
[ (apply min flat-vals) (apply max flat-vals) ] ))
(println
(bounds '(1 (-2 17 (4)) -8 (-6 13))))
;=> [-8 17]
P.S。如果将列表编写为向量,则更容易(不需要引用!):
(println
(bounds [1 [-2 17 [4]] -8 [-6 13]] ))
;=> [-8 17]