martes, 16 de febrero de 2021
Recursión
Un método recursivo es aquel que, en el cuerpo del mismo, se invoca a sí mismo.
Ejemplo de aplicaciones:
Examinar todos los ficheros de un directorio examinando a su vez todos los ficheros de sus subdirectorios.
Buscar el significado de una palabra de un diccionario.
Es una herramienta muy potente y peligrosa.
Ej. obtener la suma de n y los n-1 numeros anteriores a n:
public static long suma(long n) {
long s = 0;
//caso base n = 1
if (n == 1) return s= 1;
else return s= suma(n-1)+n;
}
Se debe tener siempre un caso base que se resuelva sin recursión.
El caso general debe ir acercándose paso a paso al caso base, sin pasarse.
//Otro ej.Imprime un entero en cualquier base entre 2 y 16.
public static final String tablaDigitos = "0123456789abcdef";
public static final int maxBase = tablaDigitos.length();
//Metodo recursivo:
public static void imprimeEnteroEnCualquierBase(int n, int b) {
if(n>=b) imprimeEnteroEnCualquierBase( n/b, b);
System.out.print(tablaDigitos.charAt(n%b));
}
//Metodo guia:
public static void imprimeEntero(int n, int b){
if(b<=1 || b > maxBase)
System.err.println("Base no correcta. "+b);
else
if (n<0) { n=-n;
System.out.println("ha puesto un numero negativo");
}
imprimeEnteroEnCualquierBase(n,b);
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario