Una subrutina recursiva es una que se llama a sí misma, ya sea en forma directa o indirecta. La recursividad, que es la práctica de llamar funciones recursivas, puede ser una poderosa herramienta al trabajar con estructuras de datos que tienen patrones repetitivos. Algunos ejemplos son las listas enlazadas y varios tipos de gráficos conectados, en los que un programa debe volver a trazar su ruta.
Recursividad sin fin El tipo más obvio de recursividad ocurre cuando una subrutina se llama a sí misma.
Por ejemplo, el siguiente programa tiene un procedimiento llamado sinfín, el cual se llama a sí mismo repetidas veces sin detenerse:
TITLE Recursividad sin fin (SinFin.asm)
INCLUDE Irvine32.inc
.data
cadSinFin BYTE "Esta recursividad nunca termina",0
Desde luego que este ejemplo no tiene ningún valor práctico. Cada vez que el procedimiento se llama a sí mismo, utiliza 4 bytes de espacio en la pila cuando la instrucción CALL mete la dirección de retorno. La instrucción RET nunca se ejecuta.
Si tiene acceso a una herramienta de monitoreo del rendimiento, como el Administrador de tareas de Windows, ábrala y haga clic en el cuadro de diálogo Rendimiento. Después ejecute el programa SinFin.exe, que se encuentra en el directorio de este capítulo. La memoria se llenará lentamente y el programa consumirá el 100% de los recursos de la CPU. Después de unos cuantos minutos, la pila del programa se desbordará y se producirá una excepción del procesador (el programa se detendrá).