2013-10-01 37 views
2

我正在审查递归这些天,发现很多Java递归方法样本是静态的。有人可以解释为什么吗?为什么递归方法通常在Java中是静态的?

我的猜测是他们想要节省内存,因为从逻辑上讲,“父”递归方法只要其子递归方法正在运行并且不返回任何东西,就会保持沉默。

也请检查下面的猜测是正确的:

静态递归的方法是相同的线程,而一个非静态的可以在单独的线程上运行上运行,这是正确的或没有作出任何意义?

+1

_The静态递归的方法是相同的线程上运行,而在非静态的可以在单独的线程运行,这是正确的或不作任何意义吗?_这是绝对不正确。您在这里有几个概念,我认为在继续之前您需要单独检查。了解“静态”方法和实例方法之间的不同之处。了解递归是什么。如果你想,理解什么线程,但这是无关的。 –

+0

'很多'和'平时'不一样。毫无根据的泛化。 – EJP

+0

@SotiriosDelimanolis谢谢!!! –

回答

6

由于递归方法/算法通常仅由它的参数通过实例变量控制,而不是。

不依赖于实例变量任何方法都可以(并且可能应该)进行static

+0

最后的评论在我看来是错误的。做一个静态方法的决定取决于它在语义上是一种类型的方法还是特定的实例。只是因为目前的实现不依赖于实例并不意味着它永远不会 - 但后来这将是一个打破API的变化。 –

+1

@IngoBürk - 好一点 - 但我会不同意对*只是简单的错误*。我故意使用了* can *这个词。这是比较容易动一静方法到实例比它可能的情况下将其移动出来,所以我去简单当初。 – OldCurmudgeon

相关问题