Estoy intentando hacer un programa que me diga si un número es primo o no, pero no termino de entender donde está el fallo. Estoy usando recursividad:
Código:
import java.io.*;
public class EsPrimo {
static boolean EsPrimoRecursivo(int n, int divisor, boolean resul){
divisor = divisor-1;
if(divisor>1)
if(n%(divisor) != 0) EsPrimoRecursivo(n, divisor, resul);
else resul= false; //Terminación anticipada.
return resul;
}
static boolean EsPrimo(int num){
int aux;
aux = num;
boolean resultado = true;
return EsPrimoRecursivo(num, aux, resultado);
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader linea = new BufferedReader(new InputStreamReader(System.in));
int numero;
System.out.print("Numero: ");
numero = Integer.parseInt(linea.readLine());
System.out.print("Primo: " + EsPrimo(numero));
}
}
Lo he puesto en el debug y mirando paso a paso lo que hace, y lo que no entiendo es: ¿por qué si llega a la instrucción:
resul = false; //Terminación anticipada, realiza también la fase de vuelta de la recursividad?
¿No se supone que, si no hago ahí ninguna llamada recursiva, se tiene que romper la recursividad y salir?