Java
¿Puede llamarse una funci´n a si misma? SI, nada lo prohibe... o Veamos qu´ pasa si hacemos lo siguiente: e
class Ejemplo { public static void main(String[] args) { muestraMensaje(); }public static void muestraMensaje() { System.out.println("Hola!"); muestraMensaje(); } }
¿C´mo podemos hacer para que se llame solo una cantidad o fija de veces a la funci´n? o
Jorge P´rez e –Programaci´n Estructurada en JAVA o 1 / 14
Recursividad
Veamos qu´ pasa si hacemos lo siguiente: e
class Ejemplo { public static void main(String[] args) { muestraMensaje(0); } public static voidmuestraMensaje(int i) { if ( i < 3 ) { System.out.println("Hola!"); muestraMensaje(i + 1); } else { System.out.println("Chao!"); } } }
¿Cu´ntas veces se muestra el mensaje? a
Jorge P´rez e
–Programaci´n Estructurada en JAVA o
2 / 14
Recursividad
Podemos hacerlo al inverso tambi´n: e
class Ejemplo { public static void main(String[] args) { int n = In.readInt();muestraMensaje(n); } public static void muestraMensaje(int i) { if ( i > 0 ) { System.out.println("Hola!"); muestraMensaje(i - 1); } else { System.out.println("Chao!"); } } }
Ahora muestra el mensaje dependiendode lo que ingresa el usuario.
Jorge P´rez e – Programaci´n Estructurada en JAVA o 3 / 14
Recursividad
¿Qu´ hace el siguiente c´digo? e o
class Ejemplo { public static void main(String[] args) {int s, n; n = In.readInt(); s = sumatoria(n); System.out.println(s); } public static int sumatoria(int i) { int j; if ( i == 0 ) { return 0; } else { j = sumatoria(i - 1) + i; return j; } } }
JorgeP´rez e
–
Programaci´n Estructurada en JAVA o
4 / 14
Recursividad
La idea de recursividad en matem´ticas tiene que ver con a funciones que son definidas en t´rminos de s´ mismas. e ıPotencia
x0 xn = = 1 x · x n−1 ← caso base ← caso recursivo
Factorial
0! n! = = 1 n · (n − 1)! ← caso base ← caso recursivo
Veamos c´mo ser´ el c´digo en JAVA. o ıa o
Jorge P´rez e
–...
Regístrate para leer el documento completo.