Foro sobre Java SE > stack overflow error
La excepción Stackoverflow se produce porque el método divisores (los métodos en Java deben comenzar con una letra minúscula) no finaliza nunca.
marzo 22, 2015 |
choces
choces
por que? no se supone que con el condicional de (div==1) return 1; termina? (ya que div siempre decrece en uno, llegara a valer uno y ahi termina la funcion) no?
marzo 22, 2015 |
jtapiase
jtapiase
Sin depurar el programa para confirmarlo, te diría que estás usando postincremento (div--) y puede que, como resultado, estés llamando al método siempre con el mismo valor de div.
Prueba a usar predecremento (--div) y a ver si eso te funciona.
marzo 22, 2015 |
rickiees
rickiees
Eso es exactamente lo que sucede. Usando div - 1 en vez de div-- funciona sin problemas.
marzo 22, 2015 |
choces
choces
Muchisimas gracias!!
marzo 22, 2015 |
jtapiase
jtapiase

Hola, estoy iniciandome apenas en la programacion recursiva y necesitaba hacer un programa que me dijiera cuantos divisores tiene un numero x, nose cual sea el error del codigo, se los agradeceria i me ayudan
package Testing;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Testing{
public static void main(String[]args) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int x = Divisores(a, a/2);
System.out.println(x);
}
static int Divisores(int x, int div){
if(div==1)
return 1;
else if(x % div == 0)
return 1 + Divisores(x,div--);
else
return Divisores(x,div--);
}
}