14. Recursividad

Ya vimos en la lección "la tortuga esta aprendiendo" que podemos enseñar a la tortuga un nuevo comando utilizando la palabra clave para.

También podemos enseñar a la tortuga un comando que requiere de un parámetro. El parámetro es una variable que modificará el comportamiento de la tortuga.

Por ejemplo:

para avanzar :distancia ad :distancia

Ahora la tortuga esperará un parámetro justo después del nuevo comando avanzar.


Enseña a la tortuga a avanzar utilizando un parámetro llamado distancia

Como vimos en el paso anterior, podemos enseñar a la tortuga, que ciertas acciones requerirán de un parámetro, que será provisto en el momento de invocar la acción.

Tambien vimos como hacer para que la tortuga dibuje un cuadrado, ¿lo recuerdas?:

para cuadrado repetir 4 [ad número de 90]


Enseña a la tortuga a dibujar un cuadrado, dejando su tamaño a ser especificado por un páramatro.

Acabamos de definir un nuevo comando de un (1)  parámetro llamado cuadrado, comprobemos su funcionamiento. Puedes escribir cuadrado 60, cuadrado 80, etc.


Ingresa el comando cuadrado 100

La situación en la que un comando o procedimiento se invoca  a sí mismo se llama recursividad. 

La recursividad deberá contar con dos elementos:

  • una condición de parada (de lo contrario la tortuga no cesará de trabajar, ¡bloqueando nuestro ordenador!)
  • una nueva invocación al mismo procedimiento pero con otro valor para el parámetro.

¿Suena complicado? No te preocupes, lo haremos paso por paso.


Enseña a la tortuga lo siguiente: para cuadrado :lado si :lado > 90 [parar] repetir 4 [ad :lado de 90] cuadrado :lado + 20

Veamos cómo funciona el comando cuadrado 40:

Primero, el parámetro lado adentro del procedimiento cuadrado recibirá el valor 40. Al utilizar el condicional la tortuga pregunta si el valor de :lado es mayor que 90 (:lado > 90), en caso que sí el programa finalizará. Si no, se dibujará un cuadrado con tamaño :lado, que es 40, y luego se invocará nuevamente el comando cuadrado con :lado + 20, es decir 60.

Ahora el valor de :lado será 60, y se volverá a repetir el escenario ya descripto. En la siguiente invocación recursiva, el :lado seró 80. Por último, :lado será 100, y el condicional si verificará que :lado es mayor que 90 (:lado > 90), lo que llevará a la detención del programa.


Escribe el comando cuadrado 40

Hagámos una espiral. La espiral recibirá una parámetro llamado :distancia. La condición de finalización será cuando :distancia > 30, y en cada invocación recursiva avanzaremos de acuerdo al parámetro :distancia (usando ad: distancia) y después girando a la derecha 15 grados (usando de 15), finalmente, invocaremos nuevamente al procedimiento espiral, usando como parámetro el producto :distancia * 1.02.


Enseña a la tortuga a dibujar una espiral
TurtleAcademy learn programming for freeYour browser is not supporting canvas We recomand you to use Chrome or Firefox browsers