我只想知道是否有任何网站在练习递归和OO设计方面存在问题(给定一些设计类/接口结构的实体)?
我理解需要递归的问题的解决方案没有任何困难,但我似乎无法将递归应用于新问题。是否有任何技巧来应用递归?如果这个问题非常愚蠢,我道歉!
答案 0 :(得分:3)
您可能需要查看Project Euler或USACO之类的内容。它们提供了从简单到硬的许多问题,并且其中许多问题可以使用递归技术来解决。在您继续操作时,您将有机会了解其他人如何解决您尝试的问题。这样你不仅可以学习递归,还可以学习许多其他解决问题的技巧。
答案 1 :(得分:2)
当然,实施binary tree及其操作
答案 2 :(得分:1)
答案 3 :(得分:1)
根据我的经验,递归最常用于更多的数学算法设计,但在更高级别的编程中(并且OOP通常更高级别),递归的使用并不总是增加太多。此外,递归过程通常不容易调整,因此如果其中一个要求发生变化,它可能会导致您重写整个过程,而在更线性的编程中,您可以更容易地获取内容或将其遗漏 - 它们的中间步骤不会彼此依赖。
此外,在(某些?)面向对象的语言中,对于每个递归级别,都会创建一个新的对象实例,这会导致开销。
这是一个很好的技术,但是根据问题的种类,你可能不会在OO问题中遇到真正的生活使用。除了文件/目录脚本之外,由于性能或可维护性原因,我基本上将大部分酷的递归解决方案重写为无聊的线性解决方案。
答案 4 :(得分:0)
你遇到了什么问题?我建议给你一个新的问题,你有另一次机会。如果你不能让它发挥作用,发布一个简单的例子,说明你拥有什么以及你想做什么,有人可能会看到你正在绊倒你的部分。