4
Carlos Eduardo Molano Giraldo Cód.: 612531 Recursividad Definición: *Recurrencia, recursión o recursividad es la forma en la cual se especifica un proceso basado en su propia definición. Siendo un poco más precisos, y para evitar el aparente círculo sin fin en esta definición: Un problema que pueda ser definido en función de su tamaño, sea este N, pueda ser dividido en instancias más pequeñas (< N) del mismo problema y se conozca la solución explícita a las instancias más simples, lo que se conoce como casos base, se puede aplicar inducción sobre las llamadas más pequeñas y suponer que estas quedan resueltas. Para que se entienda mejor a continuación se exponen algunos ejemplos: Factorial: Se desea calcular (el factorial de , que se define como el producto de todos los enteros positivos de a ). Se puede definir el problema de forma recurrente como ; como es menor que podemos aplicar inducción por lo que disponemos del resultado. El caso base es que es . Algoritmo de ordenación por fusión: Sea v un vector de n elementos, podemos separar el vector en dos mitades. Estas dos mitades tienen tamaño n/2 por lo que por inducción podemos aplicar la ordenación en estos dos subproblemas. Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso base es ordenar un vector de cero o un elemento, que está trivialmente ordenado y no hay que hacer nada. En estos ejemplos podemos observar como un problema se divide en varias (una o más) instancias del mismo problema, pero de tamaño menor gracias a lo cual se puede aplicar inducción, llegando a un punto donde se conoce el resultado (el caso base).

Recursividad

Embed Size (px)

DESCRIPTION

Recursividad

Citation preview

Carlos Eduardo Molano GiraldoCd.: 612531RecursividadDefinicin:*Recurrencia,recursinorecursividades la forma en la cual se especifica un proceso basado en su propia definicin. Siendo un poco ms precisos, y para evitar el aparentecrculo sin finen esta definicin:Un problema que pueda ser definido en funcin de su tamao, sea este N, pueda ser dividido en instancias ms pequeas (< N) del mismo problema y se conozca la solucin explcita a las instancias ms simples, lo que se conoce como casos base, se puede aplicarinduccinsobre las llamadas ms pequeas y suponer que estas quedan resueltas.Para que se entienda mejor a continuacin se exponen algunos ejemplos: Factorial: Se desea calcular(el factorial de, que se define como el producto de todos los enteros positivos dea). Se puede definir el problema de forma recurrente como; comoes menor quepodemos aplicarinduccinpor lo que disponemos del resultado. El caso base esque es. Algoritmo deordenacin por fusin: Sea v un vector denelementos, podemos separar el vector en dos mitades. Estas dos mitades tienen tamaon/2 por lo que porinduccinpodemos aplicar la ordenacin en estos dos subproblemas. Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso base es ordenar un vector de cero o un elemento, que est trivialmente ordenado y no hay que hacer nada.En estos ejemplos podemos observar como un problema se divide en varias (una o ms) instancias del mismo problema, pero de tamao menor gracias a lo cual se puede aplicar induccin, llegando a un punto donde se conoce el resultado (el caso base).Nota: aunque los trminos "recursin" y "recursividad" son ampliamente empleados en el campo de la informtica, el trmino correcto en castellano esrecurrencia. Sin embargo este ltimo trmino es algo ms especfico. Unalgoritmo recursivoes un algoritmo que expresa la solucin de un problema en trminos de una llamada a s mismo. La llamada a s mismo se conoce como llamada recursiva orecurrente.FUNCIN Factorial(n) VAR resultado: Entero SI (n0par(n))entoncesmpb(b,n/2)devolverm*mSINOmpb(b,n1)devolverb*mFIN_SI{Pos:calculabn}FinFuncionSeaT(n)lacomplejidadtemporalparaunallamadapb(b,n),considerandocomooperacinbsicalamultiplicacindedosnmeros.*Tipos de casos en los que se utiliza la recursividadLa recursividad se utiliza cuando se cumplen dos caractersticas:-El problema se debe escribir en forma recursiva.-La sentencia del problema debe incluir una condicin de fin.Al decir que se debe escribir en forma recursiva hablamos de que se debe definir una funcin en trminos de s misma.Toda funcin definida recursivamente debe contener al menos una definicin explcita para alguno de sus argumentos, este es otro de los aspectos en lo que se considera til la utilizacin de la recursividad.