【发布时间】:2014-05-02 15:51:35
【问题描述】:
对于分配给我的这个任务,我应该以迭代和递归的方式遍历大小为 1,000,000 的链表。我有迭代部分,但我对递归部分感到困惑。我有这个概念,但我告诉我的老师我不能递归地这样做,因为我不可避免地会遇到堆栈溢出错误。他说我不应该遇到这个问题,但我完全被困住了。任何提示都会很棒,因为我不知道我做错了什么。
public static void main(String[] args) {
System.out.println("Please enter how many random numbers you want to generate: ");
Scanner prompt = new Scanner(System.in);
int amount = prompt.nextInt();
Random rnd = new Random();
System.out.println("Creating list...");
for (int i = 0; i < amount; i++) {
randomList.add(rnd.nextInt(100));
}
System.out.println("Going through list...");
iterateNumbers();
long startTimeRec = System.nanoTime();
recursiveNumbers(randomList);
long elapsedTimeRec = System.nanoTime() - startTimeRec;
double seconds = (double)elapsedTimeRec / 1000000000.0;
System.out.println("Recursively, the function took " + seconds + " seconds.");
prompt.close();
}
//create the linked list
public static LinkedList<Integer> randomList = new LinkedList<Integer>();
private static void iterateNumbers() {
long startTime = System.nanoTime();
for (int i = 0; i < randomList.size(); i++) {
randomList.remove();
}
long elapsedTime = System.nanoTime() - startTime;
double seconds = (double)elapsedTime / 1000000000.0;
System.out.println("Iteratively, the function took " + seconds + " seconds.");
}
private static void recursiveNumbers(LinkedList<Integer> current) {
if (current.isEmpty() == true) {
return;
} else {
current.removeFirst();
recursiveNumbers(current);
}
}
}
【问题讨论】:
-
这段代码你得到了什么?您的确切问题是什么?
标签: java recursion data-structures linked-list stack-overflow