En esta práctica de laboratorio, construirás un programa para dibujar árboles que utiliza la recursión para dibujar las ramas creando árboles cada vez más pequeños.
En esta página, explorarás la anidación del código para árboles dentro del código para árboles.
El patrón de ramificación de muchas plantas tiene una estructura fractal: las partes más pequeñas son como copias en miniatura de la planta completa.
Un fractal es un patrón repetido infinito formado por copias (o ligeras variaciones) de la misma forma. En esta imagen, la rama verde tiene (esencialmente) la misma forma que la imagen completa.
árbol 1
. Parece sencillo, pero pronto se volverá más complicado.árbol 1
para dibujar las ramas en árbol 2
es usar abstracción.árbol 2
que utilice árbol 1
como sus ramas.árbol 1
deja de ejecutarse. ¿Por qué es esencial para que funcione árbol 2
?Transparencia del estado (state transparency): volver a poner todo (objeto, lápiz, etc.) exactamente como estaba cuando comenzaste, es importante cuando los bloques dependen de otros bloques. Por lo general, esto significa devolver el objeto a la misma posición y dirección, y el lápiz al mismo color y tamaño que tenían.
árbol 3
que use el bloque árbol 2
como ramas.
árbol 4
que use el bloque árbol 3
como ramas.árbol 5
que utilice el bloque árbol 4
. Al ejecutar Todos estos bloques se ven esencialmente iguales excepto que árbol 5
usa árbol 4
, mientras que árbol 4
usa árbol 3
, y así sucesivamente. Entonces tiene sentido preguntarse si podemos reemplazar todos estos bloques con un solo bloque árbol
, usando una variable para el número que cambia.
Usar un bloque dentro de sí mismo se llama recursividad (recursion).
árbol
. árbol 2
y árbol 3
, y por qué se necesitan estas diferencias?árbol, nivel: 9 tamaño: 50
.