我正在处理递归,在这种情况下...我需要总和一个堆栈的所有值。 我有两个功能,但只能使用10000条记录。我需要一分钟。请帮帮我!递归Java - 堆栈
代码:
public static void main(String[] args) {
Recursion r = new Recursion();
Stack<Integer> stack = new Stack();
Random rnd = new Random();
int stack_size = 10000;
for (int i = 0; i < stack_size; i++) {
stack.push(rnd.nextInt(10 - 1));
}
int s = r.stack2(stack, 0);
//int s = r.stack1(stack, stack_size, 0, 0);
System.out.println("Sum = " + s);
}
public int stack2(Stack<Integer> stack, int sum) {
if (stack.size() > 1) {
sum += (stack.get(0) + stack.get(1));
stack.remove(stack.get(0));
stack.remove(stack.get(0));
return stack2(stack, sum);
} else {
return sum;
}
}
public int stack1(Stack<Integer> stack, int size, int i, int sum) {
if (i < size) {
i++;
sum = sum + stack.get(i - 1);
return stack1(stack, size, i, sum);
} else {
return sum;
}
}
你得到的错误是什么? – user3151902
递归一百万深度很可能会遇到堆栈溢出,除非您有非常大量的内存。请注意,任何递归方法都可以重新分解为使用单个循环的方法.. – FredK
线程“main” java.lang.StackOverflowError – BASP