在 clojure 中查找树的最大值和最小值

Find the max and min values of a tree in clojure

我需要开发一个名为 bounds 的函数,它将嵌套的数字列表作为其唯一参数(即:一棵树)。边界应该 return 树中的最大值和最小值。 例如:= = (bounds '(1 (-2 17 (4) -8 (-6 13) (-8 17) 我有一个使用 apply max apply min 和 flatten 的简短版本我只是无法理解它

使用 Clojure

您需要 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]