Sunteți pe pagina 1din 4

UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO

FACULTAD DE INGENIERIA

PRACTICA 13
RECURSIVIDAD

RAMIREZ BARRERA LUIS ANGEL


01/06/2017

ESTRUCTURAS DE DATOS Y ALGORITMOS I


PROFESOR. SERGIO TEODORO VITE
El propsito de la recursividad es dividir un problema en problemas ms pequeos, de tal
manera que la solucin del problema se vuelva trivial. Bsicamente, la recursin se puede
explicar cmo una funcin que se llama as misma. Para aplica recursin se deben de cumplir
tres reglas:
1. Debe de haber uno o ms casos base.
2. La expansin debe terminar en un caso base.
3. La funcin se debe llamar a s misma
Algo es recursivo si se define en trminos de s mismo (cuando para definirse hace mencin a
s mismo). Para que una definicin recursiva sea vlida, la referencia a s misma debe ser
relativamente ms sencilla que el caso considerado.
Elementos de la Recursin
Axioma
Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada
a s mismo. Evita la continuacin indefinida de las partes recursivas.
Formula recursiva
Relaciona el resultado del algoritmo con resultados de casos ms simples. Se hacen nuevas
llamadas a la funcin, pero estn ms prximas al caso base.

Tipos de recursin
Recursividad simple
Aquella en cuya definicin slo aparece una llamada recursiva. Se puede transformar con
facilidad en algoritmos iterativos.
Recursividad mltiple
Se da cuando hay ms de una llamada a s misma dentro del cuerpo de la funcin, resultando
ms difcil de hacer de forma iterativa. Un ejemplo tpico es la funcin de Fibonacci.
Recursividad anidada
En algunos de los argumentos de la llamada recursiva hay una nueva llamada a s misma. La
funcin de Ackermann se define por recursividad como sigue:
Recursividad cruzada o indirecta
Son algoritmos donde una funcin provoca una llamada a s misma de forma indirecta, a travs
de otras funciones.
Algunos ejemplos de recursividad son:
*Programar un algoritmo recursivo que permita hacer la divisin por restas sucesivas.
->Declarar dos nmeros enteros a y b
->Es b mayor que a? Caso afirmativo se devuelve un 0, Caso Contrario se devuelve la divisin
de (a-b/b)+1.
->Fin.

Programar un algoritmo recursivo que permita sumar los dgitos de un nmero. Ejemplo:
Entrada: 123 Resultado:6
->Declarar un numero entero n.
->n es igual a 0?(caso base) Si es afirmativo devuelve a n. Caso contrario delvuelve la suma
(n/10)+ residuo(n/10).
->Fin.
Obtener el factorial de un numero:
->Llamar a la funcin fact.
->Declarar un numero entero n.
->Es n menor a 2? Afirmativo: Devuelve 1. Caso contrario: Devuelve n*fact_recursivo(n-1)
->Fin.

Serie de Fibonacci:
->Llamar a funcin Fib.
->Declarar un entero n.
->Es n = 1? Afirmativo: Devuelve 0.
->Es n=2 n=3? Afirmativo Devuelve 1.
->Devuelve Fib_Recur(n-1)+Fib_Recur(n-2) //Llamada a la misma funcin con nuevos valores a
partir de n.
->Fin

S-ar putea să vă placă și