java - 递归获取NodeAt java

标签 java recursion

我需要递归地编写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);
}

关于java - 递归获取NodeAt java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34474879/

相关文章:

java - 在数字之前用字母对 Java ArrayList 进行排序

java - 将 int 值移位零的目的是什么?

Java ForkJoin 多线程比单线程慢

c++ - 在递归模板中通过引用传递模板函数

Java使用递归void函数的结果,将每个结果添加到列表中并在另一个函数中返回

java - 从java项目到包

java - 如何从 CustomView 开始一个新的 Activity?

java - 带递归的幂函数 - java

c# - 对于 C# 列表,如何在一条记录的值更改时对列重新排序?

python - 为什么不能在递归函数中使用 yield