Sie sind auf Seite 1von 10

Instituto Tecnolgico Spencer W. Kimball Huehuetenango, Huehuetenango.

Nombre: Miqueas Israel Sales Catedrtico: lvaro Martnez

Tema: Recursividad

Curso: Estructura de datos Carrera: Perito en computacin

Fecha de entrega: 12 de agosto del 2013

Recursin 2013

Introduccin Recurrencia, recursin o recursividad es la forma en la cual se especifica un proceso basado en su propia definicin. Siendo un poco ms precisos, y para evitar el aparente crculo sin fin en esta definicin.

Miqueas Sales

Recursin 2013

Contenido

Contenido
Recursin ............................................................................................................................................. 4 Funcionamiento interno de la recursin ............................................................................................. 4 Algoritmos recursivos.......................................................................................................................... 5 Uso de las pilas para simular recursin ............................................................................................... 5 Torres de Hanoi. .................................................................................................................................. 7

Miqueas Sales

Recursin 2013
Recursin
Recursin es, en ciencias de computacin, una forma de atajar y solventar problemas. De hecho, recursin es una de las ideas centrales de ciencia de computacin. Resolver un problema mediante recursin significa que la solucin depende de las soluciones de pequeas instancias del mismo problema.

Funcionamiento interno de la recursin


El poder de la recursin evidentemente se fundamenta en la posibilidad de definir un conjunto infinito de objetos con una declaracin finita. Igualmente, un nmero infinito de operaciones computacionales puede describirse con un programa recursivo finito, incluso en el caso de que este programa no contiene repeticiones explcitas." La mayora de los lenguajes de programacin dan soporte a la recursin permitiendo a una funcin llamarse a s misma desde el texto del programa. Los lenguajes imperativos definen las estructuras de loops como while y for que son usadas para realizar tareas repetitivas. Algunos lenguajes de programacin funcionales no definen estructuras de loops sino que posibilitan la recursin llamando cdigo de forma repetitiva. La teora de la computabilidad ha demostrado que estos dos tipos de lenguajes son matemticamente equivalentes, es decir que pueden resolver los mismos tipos de problemas, aunque los lenguajes funcionales carezcan de las tpicas estructuras while y for.

rbol basado en la recursin creado usando el lenguaje de programacin Logo.

Miqueas Sales

Recursin 2013
Algoritmos recursivos
Un mtodo frecuente para simplificar es dividir un problema en problemas ms derivados de menor tamao del mismo tipo. Esto se conoce como dialecting. Cmo tcnica de programacin se denomina divide y vencers y es pieza fundamental para el diseo de muchos algoritmos de importancia, as como parte esencial de la programacin dinmica. Virtualmente todos los lenguajes de programacin modernos permiten la especificacin directa de funciones y subrutinas recursivas. Cuando se llama una funcin de este tipo, el ordenador (para la mayora de lenguajes en casi todas las arquitecturas basadas en una pila (stack) o la implementacin en el lenguaje llevan la cuenta de las distintas instancias de la funcin (en numerosas arquitecturas mediante el uso de un callstack, aunque no de forma exclusiva). A la inversa, toda funcin recursiva puede transformarse en una funcin iterativa usando un stack. La mayora (aunque no todas) las funciones y subrutinas que pueden ser evaluadas por un ordenador, pueden expresarse en trminos de una funcin recursiva (sin tener que utilizar una iteracin pura); a la inversa, cualquier funcin recursiva puede expresarse en trminos de una iteracin pura, dado que la recursin es, de por s, tambin iterativa. Para evaluar una funcin por medio de la recursin, tiene que definirse como una funcin de si misma (ej. el factor n! = n * (n - 1)! , Donde 0! se define como 1). Resulta evidente que no todas las evaluaciones de funciones se prestan a un acercamiento recursivo. Por lo general, todas las funciones finitas pueden describirse directamente de forma recursiva; las funciones infinitas (ej. las series de e = 1/1! + 2/2! + 3/3!...) necesitan un criterio extra para detenerse, ej. el nmero de iteraciones, o el nmero de dgitos significativos, en caso contrario una iteracin recursiva resultara en un bucle infinito.

Uso de las pilas para simular recursin


A modo de ilustracin: Si se encuentra una palabra desconocida en un libro, el lector puede anotar la pgina actual en un papel y ponerlo en una pila (hasta entonces vaca). El lector consulta la palabra en otro artculo y, de nuevo, descubre otra palabra desconocida, la anota y la pone en la pila, y as sucesivamente. Llega un momento que el lector lee un
Miqueas Sales 5

Recursin 2013
artculo que donde todas las palabras son conocidas. El lector retorna entonces a la ltima pgina y contina la lectura desde ah, y as hasta que se retira la ltima nota de la pila retornando entonces al libro original. Este modus operandi es recursivo. Algunos lenguajes diseados para programacin lgica y programacin funcional ofrecen la recursin como el nico medio de repeticin directa disponible para el programador. Estos lenguajes suelen conseguir que la recursin de cola sea tan eficiente como la iteracin, permitiendo a los programadores expresar otras estructuras repetitivas (tales como map y for de scheme) en trminos de recursin. La recursin est profundamente anclada en la teora de computacin, con la equivalencia terica de funcin micro recursiva y mquinas de Turing en la cimentacin de ideas sobre la universalidad del ordenador moderno. Programacin recursiva Crear una subrutina recursiva requiere principalmente la definicin de un "caso base", y entonces definir reglas para subdividir casos ms complejos en el caso base. Para una subrutina recursiva es esencial que con cada llamada recursiva, el problema se reduzca de forma que al final llegue al caso base. Algunos expertos clasifican la recursin como "generativa" o bien "estructural". La distincin se hace segn de donde provengan los datos con los que trabaja la subrutina. Si los datos proceden de una estructura de datos similar a una lista, entonces la subrutina es "estructuralmente recursiva"; en caso contrario, es "generativamente recursiva". Muchos algoritmos populares generan una nueva cantidad de datos a partir de los datos aportados y recurren a partir de ah. HTDP (HowToDesignPrograms), al espaol, "Cmo disear programas", se refiere a esta variante como recursin generativa. Ejemplos de recursin generativa incluyen: mximo comn divisor, quicksort, bsqueda binaria, mergesort, Mtodo de Newton, fractals e integracin adaptiva.

Miqueas Sales

Recursin 2013
Torres de Hanoi.
Para una detallada discusin de la descripcin de este problema, de su historia y de su solucin, consltese el artculo principal.[9][10] El problema, puesto de forma simple, es el siguiente: Dadas 3 pilas, una con un conjunto de N discos de tamao creciente, determina el mnimo (ptimo) nmero de pasos que lleva mover todos los discos desde su posicin inicial a otra pila sin colocar un disco de mayor tamao sobre uno de menor tamao. Definicin de la funcin:

Relacin de recurrencia para hanoi:

Computacin de la relacin de recurrencia para n = 4: hanoi(4) = 2*hanoi(3) + 1

= 2*(2*hanoi(2) + 1) + 1 = 2*(2*(2*hanoi(1) + 1) + 1) + 1 = 2*(2*(2*1 + 1) + 1) + 1 = 2*(2*(3) + 1) + 1 = 2*(7) + 1 = 15 Ejemplos de implementacin: Pseudocdigo (recursivo): functionhanoi is:
Miqueas Sales 7

Recursin 2013
input: integer n, such that n >= 1 1. if n is 1 then return 1 2. return [2 * [call hanoi(n-1)] + 1] end Hanoi

Aunque no todas las funciones recursivas tienen una solucin explcita, la secuencia de la Torre de Hanoi puede reducirse a una frmula explcita.[11] Una formula explcita de las Torres de Hanoi: h1 = 1 = 21 1 h2 = 3 = 22 - 1 h3 = 7 = 23 - 1 h4 = 15 = 24 - 1 h5 = 31 = 25 - 1 h6 = 63 = 26 - 1 h7 = 127 = 27 - 1 Por lo general: hn = 2n - 1, forall n >= 1

Miqueas Sales

Recursin 2013

Conclusiones Cualquier proceso puede ser definido de forma iterativa y de forma recursiva: Un proceso iterativo es aquel que requiere de la repeticin explicita de cierta accin. Un proceso es recursivo si est definido total o parcialmente en trminos de s mismo.

Miqueas Sales

Recursin 2013

E-grafa http://es.wikipedia.org/wiki/Recursi%C3%B3n_(ciencias_de_computaci%C3%B3n)

Miqueas Sales

10

Das könnte Ihnen auch gefallen