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.
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?
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.
Eso es exactamente lo que sucede. Usando div - 1 en vez de div-- funciona sin problemas.
Muchisimas gracias!!
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--);
}
}