Crear procedimientos recursivos

Microsoft VBA

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.