Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porGuiomar Barbara Modificado hace 9 años
1
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso en las matemáticas
2
Algunos ejemplos conocidos: Números naturales: 1 es un número natural el siguiente de un número natural es un número natural La función factorial, n! 0! = 1 si n > 0 entonces n! = n * ( n - 1 )! Recursión
3
Factorial de n, es igual al producto de n factores desde 1 hasta n. factorial n = n * factorial (n – 1) static int factorialNumero (int n) { int result; if (n == 0) { return 1; } result = n * factorialNumero (n - 1); return result; } Llamada recursiva Recursión
4
class Factorial { public static void main (String arg[]) { int x; System.out.println("A qué número desea calcularle el factorial "); x = CTeclado.ReadInt(); System.out.println(factorialNumero (x)); } static int factorialNumero (int n) { int result; if (n == 0) { return 1; } result = n * factorialNumero (n - 1); return result; } Recursión
5
Veamos un ejemplo, calculando el factorial de 3, utilizando el método fact. static int factorialNumero (int n) { int result; if (n = = 1) { return 1; } result = n * factorialNumero (n - 1); return result; } factorialNumero (3) result = 3 * factorialNumero (2) return result factorialNumero (2) = result = 2 * factorialNumero (1) return result factorialNumero (1)= return 1 result = 2 * 1 = 2 return 2 result = 3 * 2 = 6 return 6 return 1 Recursión
6
static int factorialNumero (int n) { if (n == 0) return 1; return ( n * factorialNumero (n - 1)); } Otra manera de plantear este método recursivo. Calculemos el factorial de 3 utilizando el método fact factorialNumero (3) factorialNumero (3) = return 3 * facorialNumero (2) factorialNumero (2) = return 2 * factorialNumero (1) factorialNumero (1) = return 1 fact (2) = 2 * 1 = 2fact (3) = 3 * 2 = 6 Recursión
7
Si un método se llama así mismo dentro de su definición, se dice que es directamente recursivo. Si un método m contiene una invocación a otro método n, que a su vez contiene una invocación a m, se dice que m es indirectamente recursivo. Un método recursivo debe disponer de una o varias instrucciones selectivas donde establecer la condición o condiciones de salida. Al escribir métodos recursivos se debe tener una sentencia if para obligar al método a volver sin que la llamada recursiva sea ejecutada. Recursión
8
Otro ejemplo clásico es la serie de fibonacci fibonacci (n) = fibonacci (n – 1) + fibonacci (n – 2) fibonacci (0) = 0 fibonacci (1) = 1 Ejemplo: fibonacci (3) = fibonacci (2) + fibonacci (1) fibonacci (3) = fibonacci (1) + fibonacci (0) + 1 fibonacci (3) = 1 + 0 + 1 = 2 Recursión
9
static int fiboSerie (int n) { if (n == 0) return 0; else if (n == 1) return 1; else return (fiboSerie (n - 1) + fiboSerie (n - 2)); } Llamada recursiva Método de fibonacci: Recursión
10
Ejercicio: Hacer un método recursivo que reciba un entero N como parámetro e imprima los número de uno en uno, desde N hasta 0. static void mostrarSerie (int n) { if (n == 0) System.out.print (n + " "); else { System.out.print (n + " "); mostrarSerie (n - 1); } Recursión
11
Ejercicio: Hacer un método recursivo que reciba un entero N como parámetro e imprima los número de uno en uno, desde 0 hasta N. static void mostrarSerie (int n) { if (n == 0) System.out.print (n + " "); else { mostrarSerie (n - 1); System.out.print (n + " "); } Recursión
12
Hacer un programa que dado un número N, genere el siguiente histograma. Utilizar métodos recursivos. Recursión
13
Recursión
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.