我希望我能得到一些帮助,我试图传递一个输入
User==> (biggest-branch [[1 [3 2]] [1 [8 8]]])
我想要做的就是浏览树并返回包含最大总数的子树。所以在这种情况下,它会返回1 + 8 + 8
的子树我已经尝试使用以下代码实现它并编译,但是我遇到了让它工作的问题,我知道代码不是真的可以抓到因为我在语言中很新,所以任何人都可以帮助我试图修复我的解决方案??
(defn leaf [leaf]
leaf)
答案 0 :(得分:2)
对您的代码的评论:
(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的文档。