ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Concepto De Recursividad


Enviado por   •  23 de Agosto de 2011  •  2.257 Palabras (10 Páginas)  •  1.778 Visitas

Página 1 de 10

Concepto de recursividad.

La recursividad es una técnica de programación importante. Se utiliza para

realizar una llamada a una funcion desde la misma funcion. Como ejemplo útil se

puede presentar el cálculo de números factoriales. Él factorial de 0 es, por definición,

1. Los factoriales de números mayores se calculan mediante la multiplicación de 1 *

2 *…, incrementando el número de 1 en 1 hasta llegar al número para el que se está

calculando el factorial.

un procedimiento recursivo ha de tener las dos

siguientes propiedades:

(1) Debe existir un cierto criterio, llamado criterio base, por el que el

procedimiento no se llama asi mismo.

(2) Cada vez que el procedimiento se llame a si mismo (directa o

inderectamente), debe estar mas cerca del criterio base.

Tipos.

Podemos distinguir dos tipos de recursividad:

• Directa: Cuando un subprograma se llama a si mismo una o mas veces

directamente.

• Indirecta: Cuando se definen una serie de subprogramas usándose unos a

otros.

Características.

Un algoritmo recursivo consta de una parte recursiva, otra iterativa o no

recursiva y un acondición de terminación. La parte recursiva y la condición de

terminación siempre existen. En cambio la parte no recursiva puede coincidir con la

condición de terminación. Algo muy importante a tener en cuenta cuando usemos la

recursividad es que es necesario asegurarnos que llega un momento en que no

hacemos más llamadas recursivas. Si no se cumple esta condición el programa no

parará nunca.

Ventajas e inconvenientes.

La principal ventaja es la simplicidad de comprensión y su gran potencia,

favoreciendo la resolución de problemas de manera natural, sencilla y elegante; y

facilidad para comprobar y convencerse de que la solución del problema es correcta.

El principal inconveniente es la ineficiencia tanto en tiempo como en memoria, dado

que para permitir su uso es necesario transformar el programa recursivo en otro

iterativo, que utiliza bucles y pilas para almacenar las variables.

Procedimeintos recursivos.

Un procedimiento o función recursiva es aquella que se llama así misma

Dentro de la teoría de la recursión, se tiene que existen diferentes tipos de

recursión:

Recursión directa.

Cuando el código F tiene una sentencia que involucra a F.

Recursión indirecta o cruzada

Cuando la función F involucra una función G que invoca a la ves una función H,

y así sucesivamente, hasta que se involucra la función F. Por ejemplo el algoritmo de

Par o impar.

Recursión simple.- Aquella en cuya función solo aparece una llamada

recursiva. Se puede transformar con facilidad en algoritmos iteractivos.

Recursión múltiple.- Se da cuando hay más de una llamada a sí misma dentro

del cuerpo de la función, resultando más difícil de transformar a iteractiva. Poe

ejemplo el algoritmo de Fibonacc

Recursión anidada.- En algunos de los argumentos de la llamada hay

una nueva llamada a sí misma. Por ejemplo la función de Ackerman:

int Ack(int m, int n)

{ if (m==0) return n+1

if (n=00) return Ack(n-1, 1)

return Ack(m-1, Ack(m, n-1));

}

Uni.

Al estar trabajando con recursividad, la memoria de la computadora hace uso

de una pila de recursión, la cual se divide de manera lógica en 4 segmentos:

1. Segmento de código.- Parte de la memoria donde se guardan las

instrucciones del programa en código máquina.

2. Segmento de datos.- Parte de la memoria destinada a almacenar las variables

estáticas.

3. Montículo.- Parte de la memoria destinada a las variables dinámicas.

4. Pila de programa.- parte destinada a las variables locales y parámetros de la

función que está siendo ejecutada.

Funciones mutuamente recursivas.

Cuando se trabaja llamados a la ejecución de las funciones, se provocan las

siguientes operaciones:

1. Reservar espacio en la pila para los parámetros de la función y sus variables

locales.

2. Guardar en la pila la dirección de la línea de código desde donde se ha

llamado a la función.

3. Almacenar los parámetros de la función y sus valores de pila.

4. Al terminar la función, se libera la memoria asignada en la pila y se vuelve a la

instrucción actual.

Pero cuando se

...

Descargar como (para miembros actualizados)  txt (16.1 Kb)  
Leer 9 páginas más »
Disponible sólo en Clubensayos.com