【发布时间】:2011-12-15 20:35:05
【问题描述】:
我最近在 BS 的 c++ 书中读到,可以将递归搜索的结果立即从整个调用堆栈中返回。 在java中做同样的事情可以吗?我知道这是可能的,但是否会气馁并认为有难闻的气味? 这比使用 'found' 标志并每次都检查它更容易。
【问题讨论】:
-
为什么要关闭投票?这是一个公平的问题。
我最近在 BS 的 c++ 书中读到,可以将递归搜索的结果立即从整个调用堆栈中返回。 在java中做同样的事情可以吗?我知道这是可能的,但是否会气馁并认为有难闻的气味? 这比使用 'found' 标志并每次都检查它更容易。
【问题讨论】:
我肯定会去买一面旗帜。当然你可以用Exception 来做到这一点,但它并不是为了控制代码通量,但有例外。异常不是免费的,而简单的标志检查将花费 O(1)。
【讨论】:
旗帜确实是更好的选择。
应该使用异常来处理意外行为,而不是控制程序的工作流程。请记住,抛出异常将使所有调用方法显式处理它,这将使您的代码很多比它需要的耦合度更高。
【讨论】:
您绝对应该使用标志。异常被设计用于异常情况。它们不应该是返回码。此外,抛出异常会产生相当大的成本,而检查标志是一种非常快速的操作。
【讨论】: