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

在clojure中查找树的最大值和最小值,clojure,tree,Clojure,Tree,我需要开发一个名为bounds的函数,它将嵌套的数字列表作为唯一的参数(即:树)。边界应返回树中的最大值和最小值。 例如:==(界限)(1(-217(4)-8(-613)-817) 我有一个使用apply max apply min和flatten的短版本,我就是想不起来 使用clojure您需要展平功能: (defn bounds [& args] (let [flat-vals (flatten args) ] ;=> (1 -2 17 4 -8 -6 13)

我需要开发一个名为bounds的函数,它将嵌套的数字列表作为唯一的参数(即:树)。边界应返回树中的最大值和最小值。 例如:==(界限)(1(-217(4)-8(-613)-817) 我有一个使用apply max apply min和flatten的短版本,我就是想不起来


使用clojure

您需要
展平
功能:

(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]
另外,如果你把你的列表写成向量,那就更容易了(不需要引用!)

(println 
  (bounds [1 [-2 17 [4]] -8 [-6 13]] ))
;=> [-8 17]

发布您目前拥有的代码。请单击向上投票和“回答”框!谢谢,AlanFlatte为您执行递归:另请参阅postwalk和postwalk演示:和