我只想知道是否有任何网站在练习递归和OO设计时遇到问题(给定一些设计类/接口结构的实体)?任何网站/书籍/技巧来练习递归和OO设计?
我理解需要递归的问题的解决方案没有任何困难,但我似乎无法将递归应用于新问题。是否有任何技巧来应用递归?我很抱歉,如果这个问题很愚蠢!
我只想知道是否有任何网站在练习递归和OO设计时遇到问题(给定一些设计类/接口结构的实体)?任何网站/书籍/技巧来练习递归和OO设计?
我理解需要递归的问题的解决方案没有任何困难,但我似乎无法将递归应用于新问题。是否有任何技巧来应用递归?我很抱歉,如果这个问题很愚蠢!
您可能需要查看诸如Project Euler或USACO之类的内容。它们提供了许多从简单到困难的问题,其中许多可以使用递归技术来解决。随着您的进行,您将有机会看到其他人如何解决您尝试的问题。这样你不仅可以学习递归,还可以学习许多其他解决问题的技巧。
当然,实现binary tree及其业务
根据我的经验,递归用于更多的数学算法设计,但在更高层次的编程(而OOP通常是更高的层次),使用递归并不总是增加很多。此外,递归过程通常不容易适应,因此如果其中一个需求发生变化,可能会导致您重写整个过程,而在更线性的编程中,您可以更容易地获取某些内容或将其忽略 - 它们的中间步骤不会互相依赖。另外,在(某些?)面向对象的语言中,对于每个递归级别,都会创建一个对象的新实例,这会导致开销。
这是一个很好的技术知道,但根据不同类型的问题,你可能不会在面向对象问题中遇到真正的生活中的使用。除了文件/目录脚本,我基本上已经将大部分酷炫的递归解决方案重写为无聊的线性方案,以达到性能或可维护性的原因。
要理解递归,您必须先了解递归。 – 2010-12-18 18:51:29
GNU的意思是“GNU Not Unix”在Java中,大多数问题最好使用循环来解决,所以如果你找不到一个好例子就不要感到惊讶。在大多数功能/逻辑编程语言中,递归往往是一种自然的选择。 – 2010-12-18 18:57:27