Como implementar recursão em Java?
Como implementar recursão corretamente em Java? Problema com StackOverflowError
Olá a todos! Estou tentando entender recursão em Java, mas constantemente encontro o erro StackOverflowError. Por favor, me digam como organizar corretamente uma chamada recursiva de método para evitar isso?
Escrevi uma função simples para calcular o fatorial de um número, mas com o valor 10000 o programa trava. Aqui está meu código:
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á tentei:
- Aumentar o tamanho da stack através dos parâmetros da JVM (
-Xss2m), mas isso apenas adia o problema, não o resolve. - Substituir
intporlongeBigInteger— o resultado é o mesmo, o erro em
No answers yet.
Faça login para deixar uma resposta