我对如何“跟踪堆栈深度”感到困惑。实际上,这个问题与我的一个问题的答案https://stackoverflow.com/a/11157985/1010943有关。答案是正确且可以理解的,但我无法理解 TIP。谷歌搜索也没有显示任何有用的信息。顺便说一句,如果这很重要,那么我正在使用 Eclipse IDE
问问题
215 次
3 回答
3
只需添加一个称为(比如说)深度的 int 参数。
在第一次调用递归函数时,传入 depth=0。
每当你递归时,通过 depth+1。
因此,深度始终是到目前为止您已经递归了多少次。
或者您可以对调用堆栈上的方法进行一些讨厌的检查,但我不会走那条路!;]
于 2012-06-22T16:04:11.683 回答
2
您可以通过在递归函数中包含深度参数或使用 Thread.getStackTrace() 来跟踪堆栈深度
于 2012-06-22T16:03:59.233 回答
2
看看http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace ()
返回表示此线程的堆栈转储的堆栈跟踪元素数组。如果此线程尚未启动或已终止,此方法将返回一个长度为零的数组。如果返回的数组长度非零,则数组的第一个元素表示堆栈的顶部,这是序列中最近的方法调用。数组的最后一个元素表示堆栈的底部,它是序列中最近的方法调用。
于 2012-06-22T16:05:08.117 回答