Ich erhalte eine StackOverflowException
auf dieser Java-Methode:Ich bekomme eine StackOverFlowException für diesen Code, weil meine JVM keine Tail Call Optimierung unterstützt, richtig?
private static final Integer[] populate(final Integer[] array, final int length, final int current) {
if (current == length) {
return array;
} else {
array[current] = TR.random.nextInt();
System.out.println(array[current]);
return populate(array, length, current + 1);
}
}
ich mit Endaufruf Rekursion spielen bin so dass ich denke, das ist das, was passiert, wenn die JVM den Stapel rechts nicht Kurzschluss tut?
Ich glaube nicht, dass das Dokument viel hinzufügt ... der Verweis auf Tail-Rekursion erwähnt nicht, ob die Stack-Referenzen sind weg optimiert – Eddy