If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Recursividad múltiple con el triángulo de Sierpinski

Hasta ahora, los ejemplos de recursividad que hemos visto requieren que hagas una llamada recursiva cada vez. Pero a veces necesitas hacer mútiples llamadas recursivas. Aquí hay un buen ejemplo, una construcción matemática que es un fractal conocido como un triágulo de Sierpinski:
Triángulo de Sierpinski completo
Como puedes ver, es una colección de cuadritos dibujados en un patrón particular dentro de una región cuadrada. Aquí está cómo dibujarlo. Comienza con la región completa cuadrada y divídela en cuatro secciones así:
Triángulo de Sierpinski de 2 por 2
Toma los tres cuadrados con una × en ellos (la parte superior izquierda, la parte superior derecha y la parte inferior derecha) y divídelas en cuatro secciones de la misma manera:
Triángulo de Sierpinski de 4 por 4
Continúa. Divide cada cuadrado con una × en cuatro secciones y pon una × en los cuadrados en la parte superior izquierda, superior derecha, superior e inferior derecha, pero nunca en la parte inferior izquierda.
Triángulo de Sierpinski de 8 por 8
Triángulo de Sierpinski de 16 por 16
Triángulo de Sierpinski de 32 por 32
Triángulo de Sierpinski de 64 por 64
Una vez los cuadrados se hagan lo suficientemente pequeños, deja de dividir. Si rellenas cada cuadrado con una × y te olvidas de todos los demás cuadrados, obtienes el triángulo de Sierpinski. Aquí está una vez más:
Triángulo de Sierpinski completo
Para resumir, aquí está cómo dibujar un triángulo de Sierpinski en un cuadrado:
  • Determina qué tan pequeño es el cuadrado. Si es suficientemente pequeño para ser un caso base, entonces simplemente rellena el cuadrado. Tú puedes escoger qué tan pequeño es "suficientemente pequeño".
  • De lo contrario, divide el cuadrado en un cuadrado superior izquierdo, un cuadrado superior derecho, un cuadrado inferior derecho y un cuadrado inferior izquierdo. "Resuelve" tres subproblemas de manera recursiva:
    1. Dibuja un triángulo de Sierpinski en el cuadrado superior izquierdo.
    2. Dibuja un triángulo de Sierpinski en el cuadrado superior derecho.
    3. Dibuja un triángulo de Sierpinski en el cuadrado inferior derecho.
Date cuenta de que no solo necesitas hacer una, sino tres llamadas recursivas. Por eso consideramos dibujar un triángulo de Sierpinski para exhibir la recursividad múltiple.
Puedes escoger cualesquiera tres de los cuadrados en los cuales dibujar de manera recursiva triángulos de Sierpinski. El resultado simplemente saldrá rotado por algún múltiplo de 90 grados del dibujo anterior. (Si dibujas triángulos de Sierpinski de manera recursiva en cualquier otro número de cuadrados, no obtendrás un resultado interesante).
El siguiente programa dibuja un triángulo de Sierpinski. Intenta comentar y descomentar algunas de las llamadas recursivas para obtener triángulos rotados:

Este contenido es una colaboración de los profesores de Dartmouth Computer Science Thomas Cormen y Devin Balkcom, con el equipo de contenidos de computación de Khan Academy. El contenido está bajo licencia CC-BY-NC-SA.

¿Quieres unirte a la conversación?

¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.