【问题标题】:Why are recursive methods usually static in Java?为什么递归方法在 Java 中通常是静态的?
【发布时间】:2016-06-01 12:11:46
【问题描述】:

这几天我在回顾递归,发现很多 Java 递归方法示例都是静态的。谁能解释一下原因?

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

另外请检查以下猜测是否正确:

静态递归方法在同一个线程上运行,而非静态方法可能在不同线程上运行,这是正确的还是没有任何意义?

【问题讨论】:

  • 静态递归方法在同一个线程上运行,而非静态方法可能在不同线程上运行,这是正确的还是没有任何意义?绝对不正确。您在这里有一些概念,我认为您需要在继续之前单独查看这些概念。了解static 方法和实例方法之间的区别。了解什么是递归。如果您愿意,请了解线程是什么,但这无关紧要。
  • “很多”与“通常”不同。毫无根据的概括。
  • @SotiriosDelimanolis 谢谢!!!

标签: java recursion static


【解决方案1】:

因为递归方法/算法通常仅由其参数控制,而不是由实例变量控制。

任何不依赖实例变量的方法都可以(并且可能应该)被设为static

【讨论】:

  • 我认为最后一条评论完全是错误的。将方法设为静态的决定取决于它在语义上是该类型的方法还是特定实例的方法。仅仅因为当前的实现不依赖于实例并不意味着它永远不会——但稍后它将是一个破坏性的 API 更改。
  • @IngoBürk - 好点 - 但我不同意完全错误。我故意用了can这个词。将静态方法移入实例比将其移出更容易,因此我尽可能一开始就简单。
猜你喜欢
  • 2011-03-12
  • 2019-08-31
  • 2020-05-04
  • 1970-01-01
  • 2012-08-03
  • 2016-12-29
  • 2012-10-22
  • 2014-04-19
  • 1970-01-01
相关资源
最近更新 更多