Los algoritmos recursivos cuentan como mínimo con 2 partes básicas:
- Caso Base: Es un caso donde se encuentra una solución al problema sin necesidad de recurrir nuevamente al llamado de la función (recursión).
- Parte Recursiva: Brinda una solución al problema cada vez más cercana a la esperada; Sin embargo, necesita un nuevo llamado a la función para determinar otra posible solución.
La recursividad es una herramienta poderosa y a la vez peligrosa. Sin duda alguna la única ventaja que ofrece comparada a la iteración, es el ahorro de código, ya que es más sencillo volver a llamar una función ya creada que programar detalladamente el ciclo de repetición que le dará solución a un problema específico; Sin embargo solo se recomienda utilizar este tipo de algoritmo cuando utiliza pocos parámetros, variables e invocaciones.
Es importante mencionar que el diseño de un algoritmo de iteración llevará más trabajo para el programador; Sin embargo se puede contar que al final será un código más rápido, seguro y estable.
Ejemplo de los 2 Codigos:
El código a continuación mostrado representa los algoritmos de iteración y recursión de un préstamo, donde se utiliza la variable m para representar el monto, x para la tasa de interés y n el numero de periodos a calcular.
ITERATIVO
public float capital(float m, int n, float x)
{
if (n == 0)
{ return m; }
else
{
x = x / 100;
for (int b = n; b > 0; b--)
{m = m + (x * m);}
} return m;
}
RECURSIVO
public float capital(float m, int n, float x)
{
if (n == 0)
{ return m; }
else
{ return capital(m, n - 1, x) * (1 + (x/100)); }
}
REFERENCIAS:
http://www.programacionfacil.com/estructura_datos_csharp:transformacion_algoritmos_recursivos.htm
http://www.slideshare.net/demogorgon/algoritmos-recursivos
http://www.elcodigo.net/tutoriales/jsavanzado/jsavanzado4.html#punto3
Post revisado!
ResponderEliminar