我对如何跟踪堆栈深度感到困惑。实际上,这个问题与我的一个问题的答案https://stackoverflow.com/a/11157985/1010943有关。答案是正确和理解但我无法理解提示。谷歌搜索也没有透露任何有用的信息。顺便说一下,如果它很重要,那么我正在使用Eclipse IDE
答案 0 :(得分:3)
只需添加一个名为(例如)深度的int参数 在第一次调用递归函数时,传入深度= 0 无论何时递归,都要经过深度+ 1 因此,深度始终是您到目前为止复发的次数。
或者你可以对调用堆栈上的方法进行一些讨厌的检查,但我不会走那条路! ]
答案 1 :(得分:2)
您可以通过在递归函数中包含深度参数或使用Thread.getStackTrace()来跟踪堆栈深度
答案 2 :(得分:2)
看看http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace()
返回表示堆栈转储的堆栈跟踪元素数组 这个帖子。如果这样,此方法将返回零长度数组 线程尚未启动或已终止。如果返回的数组是 非零长度然后数组的第一个元素代表顶部 堆栈,这是最新的方法调用 序列。数组的最后一个元素代表了数组的底部 stack,这是序列中最近的方法调用。