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