Creación de procedimientos recursivos

Los procedimientos tienen una cantidad limitada de espacio para variables. Cada vez que un procedimiento se llama a sí mismo, se usa más de ese espacio. Un procedimiento que se llama a sí mismo es un procedimiento recursivo. Un procedimiento recursivo que se llama continuamente a sí mismo acaba por causar un error. Por ejemplo:

Function RunOut(Maximum) 
 RunOut = RunOut(Maximum) 
End Function

Este error puede ser menos evidente cuando dos procedimientos se llaman entre sí de manera indefinida o cuando nunca se cumple alguna condición que limita la recursión. La recursión tiene sus usos. Por ejemplo, el procedimiento siguiente usa una función recursiva para calcular factoriales.

Function Factorial (N) 
 If N <= 1 Then ' Reached end of recursive calls. 
 Factorial = 1 ' (N = 0) so climb back out of calls. 
 Else ' Call Factorial again if N > 0. 
 Factorial = Factorial(N - 1) * N 
 End If 
End Function

Se debe probar el procedimiento recursivo para asegurarse de que no se llama a sí mismo tantas veces que se agota la memoria. Si obtiene un error, asegúrese de que el procedimiento no se está llamando a sí mismo de manera indefinida. Después, intente conservar la memoria de este modo:

  • Eliminando variables innecesarias.
  • Usando tipos de datos distintos de Variant.
  • Reevaluando la lógica del procedimiento. A menudo se pueden sustituir bucles anidados para la recursión.

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.