Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRamón Quiroga Ortega Modificado hace 8 años
1
Oscar Bedoya. oscarbed@eisc.univalle.edu.co http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos
2
Recursión Definición La Recursión permite definir la solución de un problema en términos de sí mismo. Un subprograma que se llama a sí mismo se dice que es recursivo.
3
Recursión Definición En toda definición recursiva de un problema se debe establecer un estado básico, es decir un estado en el cual la solución no se presente de manera recursiva sino directamente. Esto permite que las llamadas recursivas no continúen indefinidamente. Además, la entrada (datos) del problema debe ir acercándose al estado básico, por medio de llamados recursivos para un conjunto de datos más pequeño.
4
Recursión El número factorial(!) 0!=1 1!=1 2!=2*1 3!=3*2*1 4!=4*3*2*1 5!= 5*4*3*2*1
5
Recursión El número factorial(!) 0!=1 1!=1
6
Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1!
7
Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2!
8
Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2! 4!=4 * 3*2*1 = 4 * 3!
9
Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2! 4!=4 * 3*2*1 = 4 * 3! n! = n*(n-1)!
10
Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1)
11
Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1) Caso básico, directo, no recursivo
12
Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1) Llamado recursivo de la operación que se está definiendo. El llamado recursivo se realiza para un valor más pequeño
13
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); }
14
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4)
15
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3)
16
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2)
17
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1)
18
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) factorial(1) return 1, caso base
19
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) 1
20
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) 1
21
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*1
22
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) 2
23
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*2
24
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) 6
25
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*6
26
Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) == 24
27
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4*1 4 * 1 = 4
28
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4*1 4 * 1 = 4
29
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4 = 8 4 * 1 = 4
30
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4 = 8 4 * 1 = 4
31
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 8 4 * 2 = 4 + 4 = 8 4 * 1 = 4
32
Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 8 =12 4 * 2 = 4 + 4 = 8 4 * 1 = 4
33
Recursión Multiplicación de números naturales Cuál es el caso básico Cómo es la definición recursiva
34
Recursión Multiplicación de números naturales a * b = a, si b==1 a * b = a + a *(b-1), si b>1
35
Recursión Multiplicación de números naturales public int multiplicar (int a, int b) { if(b==1) return a; else return a + multiplicar( a, b-1); }
36
Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, …
37
Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, … Por definición, los dos primeros valores son 0 y 1 respectivamente. Los otros números de la serie se calculan sumando los dos números que le preceden
38
Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, … fib(n)=0,n==0 fib(n)=1,n==1 fib(n) = fib(n-1) + fib(n-2),n>=2
39
Recursión Multiplicación de números naturales public int fib (int n) { if ( n==0 || n==1 ) return n; else return fib(n-1) + fib(n-2); }
40
Recursión Calcular la suma de los elementos de un arreglo 33 8 23 99
41
Recursión Calcular la suma de los elementos de un arreglo + 99 33 8 23 99 33 8 23
42
Recursión Calcular la suma de los elementos de un arreglo + 99 33 8 23 99 33 8 23 + (99 + 23) 33 8
43
Recursión Calcular la suma de los elementos de un arreglo + 99 33 8 23 99 33 8 23 + (99 + 23) 33 8 + (99+23+8) 33
44
Recursión Calcular la suma de los elementos de un arreglo + 99 33 8 23 99 33 8 23 + (99 + 23) 33 8 99+23+8+33=163
45
Recursión Calcular la suma de los elementos de un arreglo public int suma (int x[], int n ) { if(n == 0) return x[0]; else return x[n] + suma(x,n - 1); }
46
Recursión Defina un método recursivo para encontrar b d Defina un método recursivo para encontrar el máximo común divisor entre a y b. Búsqueda binaria recursiva
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.