我的任务是添加一个最好使用递归反向到SingleLinkedList的方法。
public String reversed() {
StringBuilder b = new StringBuilder();
reversed(first, b);
return b.toString();
}
private void reversed(Node<E> n, StringBuilder b) {
if (n != null) {
reversed(n.next, b);
b.append(n.element);
b.append(’\n’);
}
}
当我在日食中测试时,似乎工作得很好。
但是,我不确定我是否100%理解为什么。
这就是我的想法。让我们想象一下,我们有5个节点的SingleLinkedList,并在private方法中放入了第一个Node来对其进行反转。
什么能说明其后将追加第二个元素的逻辑?有人可以解释一下我应该如何理解,现在它将添加第二个元素吗?
谢谢,想想我真的需要对Java中的递归完全理解这一点
我的任务是最好使用递归添加一个反向到SingleLinkedList的方法。 public String reversed(){StringBuilder b = new StringBuilder();反转(first,b); ...
每个方法调用保持其自己的状态。到达节点6后,堆栈上将有5个调用等待reversed(n.next, b)
完成。每个方法只能在其上方的堆栈上的reversed
调用完成后才能继续。