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); }

No hay comentarios:

Publicar un comentario