La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Recursión en programación

Presentaciones similares


Presentación del tema: "Recursión en programación"— Transcripción de la presentación:

1 Recursión en programación

2 Recursión en programación
Inducción matemática Se utiliza para hacer evidente que ciertas proposiciones son verdaderas para todos los enteros positivos. Axioma: suponer que S representa al conjunto de enteros y tiene las propiedades siguientes 1.S contiene al entero 1 2. (propiedad recurrente) siempre que S contiene al entero k, contiene también a k+1 Si k=1 entonces S contiene a k+1=2 Si k=2 entonces S contiene a k+1=3 etc.. Conclusión: si n es cualquier entero positivo,entonces n está en S.

3 Curvas de Hilbert Sea Hj una curva de Hilbert en donde j = orden de la curva con j > 0. De esta forma: Hj+1 se obtiene con la composición de 4 curvas ½(Hj) Las 4 curvas de Hj se unen con 3 líneas de conexión Así, H2 se compone de 4 curvas ½(H1 ) unidas con tres líneas rectas en distintas orientaciones

4 Curvas de Hilbert Representación: denotaremos a través de A, B, C y D, a cuatro curvas de orden 1 con diferentes orientaciones

5 Curvas de Hilbert Representación general: Observaciones:
La recursión se da en forma directa o transitiva Las flechas indican la dirección de las líneas que unen a las curvas

6 Curvas de Hilbert Curva H2 con orientación A:

7 Curvas de Hilbert Comparación

8 Curvas de Hilbert Consideraciones: Existe el procedimiento proc dibuja_linea(ent direccion, ent tamano) La dirección de la línea se define con un entero a partir de donde se encuentra ubicado el cursor, la convención es:

9 Curvas de Hilbert Algoritmo de las curvas de Hilbert
Proc A(ent orden, ent tamano) comienza si (orden > 0) entonces D(orden-1,tamano); dibuja_linea(2,tamano); A(orden-1,tamano); dibuja_linea(3,tamano); dibuja_linea(0,tamano); B(orden-1,tamano); Termina Proc B(ent orden, ent tamano) comienza si (orden > 0) entonces C(orden-1,tamano); dibuja_linea(1,tamano); B(orden-1,tamano); dibuja_linea(0,tamano); dibuja_linea(3,tamano); A(orden-1,tamano); Termina

10 Curvas de Hilbert Proc C(ent orden, ent tamano) comienza si (orden > 0) entonces B(orden-1,tamano); dibuja_linea(0,tamano); C(orden-1,tamano); dibuja_linea(1,tamano); dibuja_linea(2,tamano); D(orden-1,tamano); termina Proc D(ent orden ent tamano) comienza si (orden > 0) entonces A(orden-1,tamano); dibuja_linea(3,tamano); D(orden-1,tamano); dibuja_linea(2,tamano); dibuja_linea(1,tamano); C(orden-1,tamano); termina

11 Curvas de Hilbert Los estructuras fractales en general tienen la propiedad de auto-similitud. Es decir, si observamos una parte de la estructura como con un microscopio lo que observamos es similar, a lo que observamos a simple vista (propiedad recurrente).

12 Curvas de Hilbert

13 Ejemplo de recursión Dado un array constituido de números enteros y que contiene N elementos siendo N >= 1, devolver el elemento mayor. int mayor(int numeros[], int posicion) { int aux; if (posicion == 0) return numeros[posicion]; else { aux = mayor(numeros, posicion-1); if (numeros[posicion] > aux) else return aux; } } ... int numeros[5] = {2,4,1,-3,-1}; int N = 5; printf("%d\n", mayor(numeros, 4));


Descargar ppt "Recursión en programación"

Presentaciones similares


Anuncios Google