¿Cuál es el significado de la simulación de recursividad?

Al conocer el proceso por el cual la recursividad pasa datos hacia arriba y hacia abajo a través de los módulos llamados, puede aislar y preservar las variables únicas de cada paso recursivo y simplemente hacer un bucle de un determinado código para lograr una recursión simulada. Dado que el bucle comenzaría el proceso del código en el mismo lugar cada vez, debe mantener un marcador de lugar, que indique exactamente dónde comenzar el procesamiento de la iteración actual.

Los datos utilizados por cada paso iterativo pueden tener cualquier forma y son una función de los requisitos de programación. Un interruptor binario es probablemente la mejor forma para un marcador de lugar. Una combinación de los datos variables requeridos y un marcador de lugar forman una instantánea de las condiciones durante cualquier paso de la recursión. Debe construir una tabla donde se puedan almacenar las instantáneas. Un puntero a esta pila de instantáneas permite al programa seleccionar el conjunto apropiado de valores para una iteración particular del proceso recursivo. La profundidad de la pila debe ser tal que pueda contener todos los pasos necesarios para lograr el objetivo del programa que se está ejecutando.

Este es un esquema general para simular un procedimiento que se llama a sí mismo (recursión simple). Consulte el siguiente texto para obtener una explicación del esquema.

Declaraciones de datos (de estructuras de datos modificadas)
…………………………………
pila-puntero = 1
Inicializar la pila (primera activación)
Punto de entrada:
Leer variables locales de la pila
…………………………………
.—————————————–.
El | Una llamada recursiva: |
El | stack-pointer = stack-pointer + 1 |
El | Almacenar variables locales en la pila |
El | GOTO Punto de entrada |
‘—————————————–’
…………………………………
stack-pointer = stack-pointer – 1
IF (stack-pointer .GE. 1) GOTO Punto de entrada

(¡punto de salida!)