Escribir hacia arriba y hacia abajo
El procedimiento escribe.abajo simplemente escribe el primer elemento de su entrada hasta que la entrada está vacía:
para escribe.abajo :entrada
si vacía? :entrada [alto]
escribe primero :entrada
escribe.abajo menosprimero :entrada
finescribe.abajo "maravilloso
m
a
r
a
v
i
l
l
o
s
o
Hagamos un pequeño cambio para experimentar con la recursión simple de la que hablamos en Repetición y Recursión. Agregue otra instrucción escribe después de la línea recursiva.
para escribe.abajo :entrada
si vacía? :entrada [alto]
escribe primero :entrada
escribe.abajo menosprimero :entrada
escribe primero :entrada
finescribe.abajo "ropa
r
o
p
a
a
p
o
r
Observe el modelo siguiente para analizar cómo las entradas van pasando para producir el efecto de escribir hacia abajo y luego volver para atrás:
escribe.abajo "ropa comienza. Su entrada es "ropa
si vacía? "ropa [alto]
¿Está ropa vacía? Falso
escribe primero "ropa
- - r
escribe.abajo menosprimero "ropa
escribe.abajo "opa comienza. Su entrada es "opa
si vacía? "opa [alto]
¿Está "opa vacía? Falso
escribe primero "opa
- - o
escribe.abajo menosprimero "opa
escribe.abajo "pa comienza. Su entrada es "pa
si vacía? "pa [alto]
¿Está "pa vacía? Falso
escribe primero "pa
- - p
escribe.abajo menosprimero "pa
escribe.abajo "a comienza. Su entrada es "a
si vacía? "a [alto]
¿Está "a vacía? Falso
escribe primero "a
- - a
escribe.abajo menosprimero "a
escribe.abajo " comienza. Su entrada es "
si vacía? " [alto]
¿Está " vacía? Cierto
escribe.abajo " se detiene.
escribe primero "a
- - a
escribe.abajo "a se detiene.
escribe primero "pa
- - p
escribe.abajo "pa se detiene.
escribe primero "opa
- - o
escribe.abajo "opa se detiene.
escribe primero "ropa
- - r
escribe.abajo "ropa se detiene.
Cada llamada recursiva sólo se detiene si todas sus líneas han sido ejecutadas. Esto produce el efecto deseado.