有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java监视递归过程中创建的内部堆栈上的值

我试图理解一段涉及递归的代码片段。这是树的预序遍历

/* traversing the tree in pre order */
public void printTreeInPreOrder(Node<T> node) {   -- runs in the main method stack
   if (node == null)
    return;
    System.out.println(node.key);
    printTreeInPreOrder(node.left); --- Will create first internal stack
    printTreeInPreOrder(node.right); --- Will create the second internal stack
} 

我真正想要的是在代码执行的每一步都观察内部堆栈中的值。比如什么价值观正在被推动&;从本例中创建的两个内部堆栈中弹出

它确实有助于理解递归程序的流程

我研究了一下,发现了一些答案,比如:

System.out.println(Arrays.toString(Thread.currentThread().getStackTrace()));

这给了我这个控制台

enter image description here

没有太大帮助,因为我已经知道了流程,我需要在流程中查看内部堆栈中的值

我还阅读了有关使用Eclipse调试器的内容 我启用了静态变量&;也显示参考资料

enter image description here

这给了我这个

enter image description here

还是没用。太复杂了

我想要一些简单的东西,比如

堆栈1:3 2 1

堆栈2:1

enter image description here

可能吗


共 (1) 个答案

  1. # 1 楼答案

    可以在eclipse中的printTreeInOrder()调用处设置断点,开始调试并监视其node参数的值。 Eclipse Debugger 在“调试”视图中,可以选择要签出的帧,变量仅显示当前选定帧的变量。如果你继续使用Step Into(或类似的)程序,你可以看到帧被添加到堆栈中,并从堆栈中移除