Repetición y recursión

Todos los procedimientos en los ejemplos de círculos, arcos y Cómo usar controles con Instrucciones para la Tortuga han utilizado repite para realizar una cantidad fija de veces el movimiento hacia adelante y el giro a la derecha. Otra forma de repetir estas instrucciones es definir un procedimiento que, en la última línea, se llame a sí mismo como un subprocedimiento. Por ejemplo, el procedimiento poli puede realizar algunos diseños hermosos y sorprendentes.

para poli :paso :ángulo
adelante :paso
derecha :ángulo
poli :paso :ángulo
fin

Al probar el procedimiento poli

poli 50 120

la tortuga dibuja un triángulo una y otra vez, hasta que se la detiene presionando Ctrl+Supr o por medio de la herramienta Detener Todo.

La desventaja de este tipo de repetición es que sigue en forma indefinida. Esto significa que no se trata de un buen bloque de construcción para ser utilizado en la realización de diseños más complejos. Por otro lado, si no estamos seguros de la cantidad de veces que queremos repetir una secuencia de pasos, esta repetición indefinida permite una fácil experimentación.

Al experimentar con el procedimiento poli, vemos cómo se pueden dibujar muchas figuras diferentes con un simple procedimiento:

poli 50 144
poli 50 40
poli 100 160

Recursión es el término que usa la ciencia computacional para referirse a la posibilidad de definir un procedimiento que se llama a sí mismo en una de sus instrucciones. Decimos que poli es un procedimiento recursivo porque se llama a sí mismo. La recursión de la que se habla en los próximos capítulos utiliza como contexto para sus ejemplos la Geometría de la Tortuga. Ver ejemplos de recursión basados en textos.

Una de las características más poderosas de Logo es la posibilidad de dividir un proyecto en procedimientos, cada uno de los cuales es una entidad distinta que tiene su propio nombre. Un procedimiento puede ser llamado por cualquier otro procedimiento; a su vez, también puede llamar a otros procedimientos. Algunos procedimientos se llaman a sí mismos: estos procedimientos son recursivos.

Para poder reflexionar acerca de este proceso pensemos que Logo tiene una cantidad interminable de ayudantes, criaturas computacionales que viven dentro de la computadora. Cada vez que se llama a un procedimiento, se le dice a un ayudante que mire la definición del procedimiento. El ayudante entonces comienza a realizar las instrucciones y lo hace llamando a los otros ayudantes. Generalmente se necesitan varios ayudantes para realizar un procedimiento.

Por ejemplo, cuando se llama a poli, su ayudante llama al ayudante adelante. Cuando el ayudante adelante termina, llama al ayudante derecha. Cuando éste termina, se llama a un ayudante poli. El segundo ayudante poli llama al ayudante adelante, a un ayudante derecha y a un ayudante poli. Mientras tanto, el primer ayudante poli todavía está esperando que termine el segundo poli. En el proceso, los ayudantes adelante y los ayudantes derecha terminan sus tareas. Los ayudantes poli nunca terminan; continúan llamando a nuevos ayudantes poli.

No todos los procedimientos recursivos trabajan de esta forma. Se los puede detener. De hecho, la parte más importante al escribir procedimientos recursivos consiste en escribir reglas de detención apropiadas.