Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un procedimiento recursivo es aquel que se llama a sí mismo. En general, esta no es la manera más eficaz de escribir código de Visual Basic.
El procedimiento siguiente usa recursividad para calcular el factorial de su argumento original.
Function Factorial(n As Integer) As Integer
If n <= 1 Then
Return 1
End If
Return Factorial(n - 1) * n
End Function
Consideraciones sobre procedimientos recursivos
Condiciones de limitación. Debe diseñar un procedimiento recursivo para probar al menos una condición que pueda terminar la recursión y también debe controlar el caso en el que no se cumpla dicha condición dentro de un número razonable de llamadas recursivas. Sin al menos una condición que se pueda cumplir sin fallar, tu procedimiento corre un alto riesgo de entrar en un bucle infinito.
Uso de memoria. La aplicación tiene una cantidad limitada de espacio para las variables locales. Cada vez que un procedimiento se llama a sí mismo, usa más espacio para copias adicionales de sus variables locales. Si este proceso continúa indefinidamente, finalmente produce un StackOverflowException error.
Eficiencia. Casi siempre puede usar un bucle en lugar de recursividad. Un bucle no tiene la sobrecarga de pasar argumentos, inicializar almacenamiento adicional y devolver valores. El rendimiento puede ser mucho mejor sin llamadas recursivas.
Recursividad mutua. Es posible que observes un rendimiento muy deficiente o incluso un bucle infinito, si dos procedimientos se llaman entre sí. Este diseño presenta los mismos problemas que un único procedimiento recursivo, pero puede ser más difícil de detectar y depurar.
Llamar con paréntesis. Cuando un Function
procedimiento se llama de forma recursiva, debe seguir el nombre del procedimiento entre paréntesis, incluso si no hay ninguna lista de argumentos. De lo contrario, el nombre de la función se considera como el que representa el valor devuelto de la función.
Pruebas Si escribe un procedimiento recursivo, debe probarlo con cuidado para asegurarse de que siempre cumple alguna condición de limitación. También debes asegurarte de que no se puede agotar la memoria debido a que hay demasiadas llamadas recursivas.