我目前在下班后的空闲时间在 Coursera 上学习 Scala 课程,试图最终尝试函数式编程。我目前正在处理一项任务,我们应该“计算”包含某个对象的两个集合的并集。我故意省略了细节,因为这对我在这里要问的内容并不重要。然而,相关的是集合被定义为二叉树,每个节点包含一个元素和两个子树。
既然如此;讲座中的例子union
如下:
def union(other:BTSet) :BTSet = ((left union right) union other) incl element
问题1:坦率地说,即使在阅读了相关的FAQ和其他论坛帖子之后,我仍然不明白这个功能是如何以及为什么起作用的。除了在头节点添加(调用)元素之外,在联合实现中这里绝对没有“动作” incl
,它只是一遍又一遍地调用自己。我会非常感谢一些解释......
问题2:课程论坛中有很多帖子说这个解决方案根本没有效率,而且还不够好。看到我不明白它是如何工作的,我真的不明白为什么它不够好。
请注意,我不会以任何方式要求对分配解决方案进行剧透。我非常愿意“为成绩做作业”,但我根本不明白我应该在这里做什么。我不相信课程中提供的说明和指导足以让您了解函数式编程的怪癖,因此我欢迎任何关于如何正确思考而不是如何正确编码的评论/答案。