ALGORITMOS DE PROGRAMACION

Buscar en este sitio

Autores de la página

  • christhian jonnathan garcia obregon
    junio 3, 2011

RECURSIVIDAD

RECURSIVIDAD

RECURSIVIDAD

El concepto de recursividad es muy importante en la programación funcional, y se puede definir “ Como el proceso de resolver un problema reduciéndolo a uno ó más subproblemas que son idénticos en su estructura al problema original y más simple de resolver.”

Una vez que sea subdividido el problema original, se utilizará la misma técnica de descomposición para subdividir cada uno de estos subproblemas en otros que son menos complejos, hasta que los subproblemas llegan a ser tan simples que se pueden resolver sin realizar más subdivisiones, y la solución general del problema se obtiene juntando todos los componentes resueltos.

Una función o procedimiento que se puede llamar a sí misma se llama recursivo. La recursividad es una herramienta muy potente en algunas aplicaciones, sobre todo de cálculo. La recursión puede ser utilizada como una alternativa a la repetición o estructura repetitiva.

La razón de que existan lenguajes que admitan la recursividad se debe a la existencia de estructuras específicas tipo pilas (stack) para este tipo de procesos y memorias dinámicas.

Vídeo de YouTube


La recursividad es una manera elegante, intuitiva y concisa de plantear una solución, y es uno de los pilares de la programación funcional. Pero no quiere decir que sea un sistema eficiente, es decir, que el número de operaciones que hay que hacer sea inferior que si se utiliza otra forma de resolverlo, como seria mediante una estructura repetitiva. Al contrario la recursividad es cara y exige un mayor procesamiento.

Ejemplo:

//Función Fibonacci recursiva

FIB (X):

Inicio_Fibonacci

Si (X = 0 ó X = 1) entonces

FIB = X

Si no

FIB = FIB (X-1) + FIB (X-2)

Fin_si

Fin_Fibonacci

//Función Fibonacci no recursiva

FIB (X):

Inicio_Fibonacci

Si (X = 0 ó X = 1) entonces

FIB = N

Si no

A = 0

B = 1

Para (i = 2; i <= X; i++)

C = A + B

A = B

B = C

Fin_para

FIB = C

Fin_si

Fin_Fibonacci

Comments