我有以下方法
public void insertTailNode(T data) {
if (this.head == null) {
Node<T> temp = new Node<T>(data, null);
this.head = temp;
this.size++;
} else if (this.head.getNext() == null) {
Node<T> temp = new Node<T>(data, this.head);
this.head = temp;
this.size++;
} else {
this.head = head.getNext();
insertTailNode(data);
}
}
如何使用递归添加尾节点?
我尝试在头节点上使用构造函数,但很明显,每次调用都会重置回第一个节点。
2条答案
按热度按时间mkshixfv1#
你不能在没有节点param/variable的情况下使用recursion * 和 * 来实现它...
我们可以反复进行:
“递归地”(但不是没有参数/变量!),它可能看起来像:
与:
798qvoo82#
已经有了一个充分的答案。
您的代码是错误的,因为它试图使用
head
作为变量来指向最后一个节点。事实上,递归需要一个额外的状态/参数来进行递归调用。因此,人们经常看到一个公共非递归方法调用一个带有额外状态的递归方法。这里它将是头节点。