0

我遇到了一个问题,其中该方法输出 null 而不是返回列表的第 (n+1) 项。有什么我忽略的吗。

    public static ListElement getItem(ListElement head, int n){
    if(n == 0){                 
        return head;

    }else if(head == null){

            return null;
    }else{                      

        return  getItem(head.getNext(),n+1);

    }

}
4

3 回答 3

1

这段代码没有意义。如果 head 不为空,它会调用getItem(head.getNext(), n+1)但最终head会相等null(并且n永远不会变为 0),因此它会返回 you null。也许你的意思是

return getItem(head.getNext(), n-1).

于 2012-07-12T03:00:20.543 回答
0

从 n+1 更改为 n-1(为了得到递归的基本情况,n == 0):

return  getItem(head.getNext(),n-1);
于 2012-07-12T02:57:29.813 回答
0

你应该做n-1,而不是n+1。n 对应于您想要的元素的位置,如果您删除列表中的顶部项目,则所有内容都会向下移动一个位置,而不是向上。

改成getItem(head.getNext(),n-1);

于 2012-07-12T02:57:34.603 回答