Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2010, 12:37
vrael
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Recursividad JAVA: Terminación anticipada

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?
__________________
Blog: http://a-dream-of-dragon.blogspot.com