嗨,我希望我能得到一些帮助,我正在尝试传递输入
User==> (biggest-branch [[1 [3 2]] [1 [8 8]]])
我想做的是遍历树并返回包含最大总数的子树。所以在这种情况下它将返回 1+8+8 的子树
我尝试使用以下代码来实现它并进行编译,但是我在使其工作时遇到问题,我知道代码并不是真正达到标准,因为我对语言还很陌生,所以任何人都可以帮助我尝试修复我的解决方案?
(defn leaf [leaf]
leaf)
最佳答案
对您的代码的评论:
(seq? [])
返回false
。您想使用coll吗?
。您的
sum-tree
函数看起来像是语法错误,这可能就是您收到错误的原因。我建议在可以自动缩进的环境中工作并尽可能多地使用该功能。它应该更快地揭示此类问题。每个分支都是一棵树。你在某种程度上已经认识到了这一点,但并没有完全接受它。不需要单独的
branch-total
和sum-tree
函数,因为它们是同一件事。leaf
函数不是必需的。它与identity
功能相同。
这应该是所需的全部代码:
(defn sum-tree [tree]
(if (coll? tree)
(apply + (map sum-tree tree))
tree))
(defn biggest-branch [tree]
(apply max-key sum-tree tree))
(biggest-branch [[1 [3 2]] [1 [8 8]]])
; => [1 [8 8]]
查看 max-key 的文档.
关于clojure - Clojure 树函数中的子树总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719713/