因此,大多数情况下,我需要使用递归方法来计算链表中的元素数量。但是,我被抛出界限例外。我似乎无法解决这个问题。当在递归列表中使用递归时,索引超出范围异常
import java.util.*;
import java.util.LinkedList;
public class ListCount {
public static LinkedList<String> ll = new LinkedList<String>();
public static void main(String[] args) {
int size = 0;
LinkedList<String> list = new LinkedList<String>();
list.add("Hi");
list.add("I");
list.add("am");
list.add("a");
list.add("programmer");
list.add("and");
list.add("I");
list.add("am");
list.add("currently");
list.add("working");
list.add("on");
list.add("an");
list.add("assignment");
list.add("that");
list.add("is");
list.add("based");
list.add("on");
list.add("linkedlists");
list.add("for");
list.add("java");
ll = list;
countsize(size);
}
public static int countsize(int somevalue)
{
Iterator next = ll.listIterator(somevalue);
{
if (next == null)
{
return 0;
}
else
{
countsize(somevalue + 1);
}
System.out.println(somevalue);
}
return 0;
}
这里是堆栈跟踪:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 21, Size: 20
at java.util.LinkedList.checkPositionIndex(Unknown Source)
at java.util.LinkedList.listIterator(Unknown Source)
at ListCount.countsize(ListCount.java:44)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.countsize(ListCount.java:52)
at ListCount.main(ListCount.java:38)
无论是“要求”你通过递归计算列表中元素的数量,都要求一些非常荒谬的东西。如果列表中有足够的元素,无论编写代码的方式如何,您都会遇到堆栈溢出错误。更好的方法是使用while循环对元素进行计数,或者只需在列表本身调用size()函数。 – 2014-10-29 21:58:47