Você está na página 1de 11

INSTITUTO TECNOLÓGICO DE SALINA CRUZ

ASIGNATURA:
ESTRUCTURA Y ORGANIZACIÓN DE DATOS

UNIDAD 3 ESTRUCTURAS NO LINEALES

PROFESORA:
M.C SUSANA MÓNICA ROMÁN NÁJERA

TEMA:
REPORTE DE INVESTIGACIÓN DEL TEMA RECURSIVIDAD

ALUMNA:

VILLALOBOS PEREZ BENITA

SEMESTRE: 3 GRUPO: E

SALINACRUZ, OAXACA A 21 DE OCTUBRE 2014.


ÍNDICE

INTRODUCCIÓN ..................................................................................................................... 1
RECURSIVIDAD ...................................................................................................................... 2
MECÁNICA RECURSIÓN. ...................................................................................................... 5
TRANSFORMACIÓN ALGORITMOS RECURSIVOS A ITERATIVOS .................................. 6
RECURSIVIDAD EN DISEÑO................................................................................................. 7
CONCLUSIÓN ......................................................................................................................... 8
OTRAS FUENTES CONSULTADAS ...................................................................................... 9
INTRODUCCIÓN
Para seguir con la continuación de los temas referentes a la unidad 3 se estará
hablando sobre el tema de recursividad más que nada se enfoca a que dicha función
tiene varios ciclos repetitivos.

Mediante la realización del siguiente trabajo se encontraran diferentes


conceptos de recursividad, sus funciones, ventajas, desventajas para poder adquirir
más conocimientos sobre el tema y comprender mejor cada concepto y relacionarla
con la vida real.

Esperando que este trabajo contenga la información necesaria para aclarar


cualquier dudad del lector así como también de la persona que lo realiza.

1
RECURSIVIDAD

Podemos definir la recursividad como un proceso que se define en términos de sí


mismo.

El concepto de recursión es difícil de precisar, pero existen ejemplos de la vida


cotidiana que nos pueden servir para darnos una mejor idea acerca de lo que es
recursividad. Un ejemplo de esto es cuando se toma una fotografía de una fotografía,
o cuando en un programa de televisión un periodista transfiere el control a otro
periodista que se encuentra en otra ciudad, y este a su vez le transfiere el control a
otro.

Otro ejemplo paradigmático seria el del triángulo de Sierpinski en el que cada


triangulo está compuesto de otro más pequeños, compuestos a su vez de la misma
estructura recursiva (de hecho en este caso se trata de una estructura fractal).

Casos típicos de estructuras de datos definidas de manera recursiva son los


árboles binarios y las listas enlazadas.

La recursión se puede dar de dos formas:

 DIRECTA. Este tipo de recursión se da cuando un subprograma se llama


directamente a sí mismo.
 INDIRECTA Sucede cuando un subprograma llama a un segundo subprograma, y
este a su vez llama al primero, es decir el subproceso A llama al B, y el B invoca
al subproceso A.

La recursividad es un concepto fundamental en matemáticas y en computación.

Es una alternativa diferente para implementar estructuras de repetición


(ciclos). Los módulos se hacen llamadas recursivas.

Se puede usar en toda situación en la cual la solución pueda ser expresada


como una secuencia de movimientos, pasos o transformaciones gobernadas por un
conjunto de reglas no ambiguas.
2
Las funciones recursivas se componen de:

Caso base: una solución simple para un caso particular (puede haber más de un
caso base).

Caso recursivo: una solución que involucra volver a utilizar la función original, con
parámetros que se acercan más al caso base. Los pasos que sigue el caso recursivo
son los siguientes:

1. El procedimiento se llama a sí mismo


2. El problema se resuelve, tratando el mismo problema pero de tamaño menor
3. La manera en la cual el tamaño del problema disminuye asegura que el caso
base eventualmente se alcanzará.

Un objeto es recursivo cuando se define en función de sí mismo, es decir,


interviene en su propia definición.

La recursividad es la propiedad mediante la cual un subprograma o rutina puede


llamarse a sí mismo.

Utilizando la recursividad, la resolución de un problema se reduce a uno


esencialmente igual pero algo menos complejo.

Características que deben cumplir los problemas recursivos:

 La recursividad debe terminar alguna vez: caso base


 Cada nueva formulación estamos más cerca del caso final (o base).

Factible de utilizar recursividad

• Para simplificar el código.


• Cuando la estructura de datos es recursiva ejemplo : árboles.

3
No factible utilizar recursividad

• Cuando los métodos usen arreglos largos.


• Cuando el método cambia de manera impredecible de campos.
• Cuando las iteraciones sean la mejor opción.

¿POR QUÉ ESCRIBIR PROGRAMAS RECURSIVOS?

 Son más cercanos a la descripción matemática.


 Generalmente más fáciles de analizar
 Se adaptan mejor a las estructuras de datos recursivas.
 Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y
elegantemente simples.

Los términos recurrencia, recursión o recursividad hacen referencia a una técnica


de definición de conceptos (o de diseño de procesos) en la que el concepto definido
(o el proceso diseñado) es usado en la propia definición (o diseño).

Se dice que una función es recursiva cuando dicha función se define en términos
de la misma función. Es importante recordar que no todas las funciones pueden
llamarse a sí mismas, deben estar diseñadas especialmente para comportarse de
manera recursiva, de otro modo dichas funciones podrían conducir a bucles infinitos,
o a que el programa termine inadecuadamente.

Por ejemplo, podríamos pensar en la creación de un algoritmo que produzca el


resultado de un número factorial, la definición iterativa de dicho algoritmo seria la
siguiente:

int factorial (int n)


{
prod = 1;
for (x = n; x > 0; x-- )
prod *= x;

4
return prod;
}

La definición iterativa es sencilla, pero no resulta tan intuitiva, en cambio, uno


podría analizar más detalladamente el problema y generar una definición recursiva
para una función factorial que podría resultar más intuitiva y sencilla de implementar:

MECÁNICA RECURSIÓN.

La mecánica de la recursividad está basada en una “pila”. Cuando un módulo


recursivo se está ejecutando se crea en la memoria de la computadora una pila
donde se almacenan los valores de los parámetros y de las variables locales del
módulo. Si el módulo es función también se guarda en la pila el valor que adquiere la
misma.

Para cada llamada del módulo se almacenan en la pila los nuevos valores de
los parámetros y de las variables locales, creándose un nuevo “registro de
activación”. De tal forma que, la pila de recursión está formada por registros de
activación. Al terminar una llamada al módulo, es decir, cuando se cumple la
definición base, se libera (sale) el registro de activación que se encuentra en el tope
de la pila. De esta forma es como puede “recordar” qué valores tenían los
parámetros y las variables locales en la llamada anterior.

Si observamos el proceso que seguimos para calcular 4! vemos que el valor


de n fue cambiando conforme fuimos entrando en recursión y que al salir de
recursión necesitábamos recordar el valor que tenía n en la expresión anterior. Esto
quiere decir que los valores que fue adquiriendo n fueron entrando a la pila.

No sólo debe recordar los valores que tenían los parámetros y las variables
locales al realizarse la correspondiente llamada al módulo sino que también tiene que
recordar qué instrucción debe realizar al terminar esa llamada. De tal forma que los
registros de activación están compuestos básicamente de:

5
1. Instrucción a la que debe regresar el control una vez terminada la ejecución
actual del módulo.
2. Todos los parámetros y variables locales del módulo.
3. Si el módulo recursivo es una función el valor que adquiere la misma, ya que éste
se debe regresar.

Para hacer la representación de la pila de recursión numeramos las instrucciones


a las que debe regresar el control una vez terminada la ejecución del módulo
recursivo y estos valores son los que ponemos en la pila.

TRANSFORMACIÓN ALGORITMOS RECURSIVOS A ITERATIVOS

El concepto de recursividad va ligado al de repetición. Son recursivos aquellos


algoritmos que, estando encapsulados dentro de una función, son llamados desde
ella misma una y otra vez, en contraposición a los algoritmos iterativos, que hacen
uso de ciclos while, do-while, for, etc.

Algo es recursivo si se define en términos de sí mismo (cuando para definirse


hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia
a sí misma debe ser relativamente más sencilla que el caso considerado.

Ejemplo: definición de nº natural:

 El N º 0 es natural
 El Nº n es natural si n-1 lo es.

En un algoritmo recursivo distinguimos como mínimo 2 partes:

a) Caso trivial, base o de fin de recursión:

Es un caso donde el problema puede resolverse sin tener que hacer uso de una
nueva llamada a sí mismo. Evita la continuación indefinida de las partes recursivas.

b) Parte puramente recursiva:

6
Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen
nuevas llamadas a la función, pero están más próximas al caso base.

RECURSIVIDAD EN DISEÑO

Un procedimiento recursivo es aquel que se llama a si mismo, para poder funcionar


tiene que tener una condición de salida que del número de veces que se va a llamar
así mismo el procedimiento.

La recursividad en diseño se refiere a la manera de cómo representar los


procedimientos recursivos al momento de diseñar los programas.

Dependiendo del método que utilicemos para diseñar la representación gráfica


de la recursividad va a ser diferente sin embargo el procedimiento va a ser similar ya
que el fin es el mismo poner una condición que nos diga si llamamos al método o que
nos mande terminarlo.

En un diagrama sería algo así:

Figura 1 Recursividad

7
CONCLUSIÓN
La recursividad es un concepto fundamental en matemáticas y en computación.

Es una alternativa diferente para implementar estructuras de repetición


(ciclos). Los módulos se hacen llamadas recursivas.

Se puede usar en toda situación en la cual la solución pueda ser expresada


como una secuencia de movimientos, pasos o transformaciones gobernadas por un
conjunto de reglas además como se pudo notar la recursividad también se puede
trabajar mediante pilas, así como también se mencionó algunos algoritmos para
utilizar la recursividad el cual se utilizó la de calcular un numero factorial es un
ejemplo más común que se encontró.

Esperando que el trabajo contenga la información necesaria para asi cumplir


con las características que se van a calificar.

8
OTRAS FUENTES CONSULTADAS

Concepto de recursividad. Internet. En línea. Página consultada el día 16 de octubre


de 2014. Disponible en: http://estructura-u1.blogspot.mx/2010/01/unidad-3-
recursividad.html.

Concepto de recursividad. Internet. En línea. Página consultada el día 16 de octubre


de 2014. Disponible en: http://es.wikipedia.org/wiki/Recursi%C3%B3n.

Concepto de recursividad. Internet. Fuera de línea. Página consultada el día 16 de


octubre de 2014. Disponible en:
http://webdelprofesor.ula.ve/nucleotrujillo/jalejandro/Prog2/Unidad3.pdf.

Concepto de recursividad. Internet. En línea. Página consultada el día 16 de octubre


de 2014. Disponible en: http://picandocodigo.net/2008/recursividad-en-
programacion/.

Concepto de recursividad. Internet. Fuera de línea. Página consultada el día 16 de


octubre de 2014. Disponible en:
http://www.uv.mx/personal/ocastillo/files/2011/04/Recursividad.pdf.

Concepto de recursividad. Internet. En línea. Página consultada el día 16 de octubre


de 2014. Disponible en: http://www.youtube.com/watch?v=heEjRbkvOog.

Você também pode gostar