Comment implémenter la récursion en Java ?
Comment implémenter correctement la récursion en Java ? Problème de StackOverflowError
Bonjour à tous ! J'essaie de comprendre la récursion en Java, mais je tombe constamment sur l'erreur StackOverflowError. Pouvez-vous me dire comment organiser correctement un appel récursif de méthode pour l'éviter ?
J'ai écrit une fonction simple pour calculer la factorielle d'un nombre, mais avec la valeur 10000, le programme plante. Voici mon code :
public class RecursionTest {
public static int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
public static void main(String[] args) {
System.out.println(factorial(10000)); // StackOverflowError
}
}J'ai déjà essayé :
- Augmenter la taille de la pile via les paramètres JVM (
-Xss2m), mais cela ne fait que repousser le problème, sans le résoudre. - Remplacer
intparlongetBigInteger— le résultat est le même, l'erreur persiste.