我正在處理遞歸,在這種情況下...我需要總和一個堆棧的所有值。 我有兩個功能,但只能使用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