Je travaille sur la récursivité, dans ce cas ... J'ai besoin de sommer toutes les valeurs d'une pile. J'ai deux fonctions, mais ne fonctionne qu'avec 10000 enregistrements. J'ai besoin d'un millier. Aidez-moi, s'il vous plaît!Recursion Java - Stack
code:
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;
}
}
Quelle est l'erreur que vous obtenez? – user3151902
Récursion un million de profondeur est très susceptible de rencontrer un débordement de pile sauf si vous avez une très grande quantité de mémoire.Notez que toute méthode récursive peut être recréée dans une méthode qui utilise une seule boucle .. – FredK
Exception dans le fil "principal" java.lang.StackOverflowError – BASP