Descargar la presentación
La descarga está en progreso. Por favor, espere
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));
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.