我需要递归编写getNodeAt()
方法。
这是原始方法:
private Node getNodeAt(int givenPosition) {
Node currentNode=firstNode;
for (int i =0; i < givenPosition; i++)
currentNode=currentNode.next;
return currentNode;
}
这是我的尝试:
private Node getNodeAt(int givenPosition) {
Node currentNode;
if (givenPosition == 0) {
return currentNode = firstNode;
} else {
return getNodeAt(givenPosition - 1);
}
}
最佳答案
您必须在每个递归调用中对下一个节点进行一些Node
引用,这意味着您需要一个附加参数:
private Node getNodeAt(Node currentNode, int givenPosition) {
if (givenPosition == 0){
return currentNode;
}else {
return getNodeAt(currentNode.next, givenPosition - 1);
}
}
对该方法的初始调用是
Node node = getNodeAt (firstNode, someIndex);
或者,您可以创建一个包含初始调用的附加方法:
public Node getNodeAt(int givenPosition) {
return getNodeAt (firstNode, givenPosition);
}