Crear procedimientos recursivos
Los procedimientos tienen un espacio limitado para almacenar variables. Cada vez que un procedimiento se llama a si mismo, consume más de ese espacio. Un procedimiento que se llama a si mismo es lo que se conoce como un procedimiento recursivo. Un procedimiento recursivo que se llama continuamente a si mismo producirá finalmente un error. Por ejemplo:
Function Agotar(Máximo)
Agotar = Agotar(Máximo)
End Function
Este error puede resultar menos evidente cuando dos procedimientos se llaman uno al otro de forma indefinida, o cuando nunca se cumple la condición definida como fin de un bucle. Las funciones recursivos tienen sus usos. Por ejemplo, el siguiente procedimiento utiliza una función recursivo para calcular factoriales:
Function Factorial (N)
If N <= 1 Then ' Se ha llegado al fin de las llamadas recursivos.
Factorial = 1 ' (N = 0) abandona las llamadas.
Else ' Llama nuevamente a Factorial si N > 0.
Factorial = Factorial(N - 1) * N
End If
End Function
Debe probar el procedimiento recursivo para comprobar que no se llama a si mismo tantas veces que agota la memoria disponible. Si se produce un error, compruebe que el procedimiento no se llama a si mismo de forma indefinida. Si no es así, trate de ahorrar memoria mediante:
- La eliminación de variables innecesarias.
- El uso de tipos de datos distintos a Variant.
- Un nuevo estudio de la lógica del procedimiento. A menudo es posible sustituir bucles anidados por un procedimiento recursivo.