Está en la página 1de 9

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO SUPERIOR DE ALVARADO


Campus Medellín

ING. SISTEMAS COMPUTACIONALES

MATERIA:
ESTRUCTURA DE DATOS

NOMBRE DEL TRABAJO:

INVESTIGACION DE COMPETENCIA DE INVER.

SEMESTRE:
TERCER SEMESTRE
NÚMERO DE UNIDAD:
UNIDAD 2

NOMBRE DE LOS ALUMNOS:


HERNÁNDEZ MAGAÑA JESÚS GERARDO

DOCENTE:
DIONISIO PEREZ PEREZ
INDICE

INTRODUCCIÓN: .............................................................................................................3
2 - ¿Cuándo utilizar recursividad?....................................................................................................................... 3

DESARROLLO ..................................................................................................................4
3 - La pila de recursión ....................................................................................................................................... 5

CONCLUSIONES:..............................................................................................................7
BIBLIOGRAFÍA .................................................................................................................8
INTRODUCCIÓN:

- La recursividad es una característica de los lenguajes de programación que permite que


un subprograma se invoque a sí mismo.

- La recursividad es útil para resolver problemas definibles en sus propios términos.

- La recursividad es, en cierta medida, análoga al principio de inducción.

- No existen problemas intrínsecamente recursivos o iterativos; cualquier proceso iterativo


puede expresarse de forma recursiva y viceversa.

- La recursividad, aunque da lugar a algoritmos más simples y compactos resulta más


lenta y consume más recursos al ejecutarse sobre el ordenador.

Debemos tener mucho cuidado cuando realizamos llamadas recursivas ya que si la utilizamos
sin control podríamos desbordar la memoria del ordenador, causando que el programa se rompa.
2 - ¿Cuándo utilizar recursividad?

Como se puede apreciar de la descripción anterior. Podemos utilizar recursividad para


reemplazar cualquier tipo de bucle.

A pesar de ello en el mundo laboral no se utiliza demasiado, debido a que un error puede ser
trágico en la memoria, así como tener una lista con millones de datos, puede hacer que utiliza
mucha memoria. Aun así, la gran mayoría de las veces, utilizamos recursividad para algoritmos
de búsqueda u ordenación.
DESARROLLO

Se denomina caso base a la condición de terminación de la recursividad.

Ejemplo 1

Ejemplo es calcular el factorial de un numero:

*multiplicar todos los números entre dos enteros. En matemáticas se expresa con n! donde n es
el último número a comprobar. Debemos empezar desde el 1.

Ejemplo utilizando un método iterativo:

public static int FactorialIterativo(int numero)


{
int i, resultado = 1;
for(i=1; i <= numero; i++)
{
resultado = resultado * i;
}
return resultado;

El ejemplo utilizando método recursivo:

public static int FactorialRecursivo(int numero)

if (numero == 0) return 1;

return numero * FactorialRecursivo(numero - 1);

Ejemplo: A continuación, se puede ver la secuencia de factoriales:


Solución Recursiva
Dado un entero no negativo x, regresar el factorial de x fact:

Entrada n entero no negativo,

Salida: entero.

int fact (int n)

if (n == 0)

return 1;

else

return fact(n – 1) * n ;

Es importante determinar un caso base, es decir un punto en el cual existe una condición por la
cual no se requiera volver a llamar a la misma función.

3 - La pila de recursión

La memoria de un ordenador se divide en 4 segmentos:

• Segmento de código: almacena las instrucciones del programa en código máquina.


• Segmento de datos: almacena las variables estáticas o constantes.
• Montículo: almacena las variables dinámicas
• Pila del programa: Parte destinada a las variables locales y parámetros de la función que
se está ejecutando.

Cuando llamamos a una función (o método) el proceso es el siguiente:

1. Se reserva espacio en la pila para los parámetros de la función y sus variables locales.
2. Se guarda en la pila la dirección de la línea del código desde donde se ha llamado al
método.
3. Se almacenan los parámetros de la función y sus valores en la pila.
4. Finalmente se libera la memora asignada en la pila cuando la función termina y se vuelve
a la llamada de código original.

En cambio, cuando la función es recursiva:


• Cada llamada genera una nueva llamada a una función con los correspondientes objetos
locales.
• Volviéndose a ejecutar completamente, hasta la llamada a si misma. Donde vuelve a crear
en la pila los nuevos parámetros y variables locales. Tantos como llamadas recursivas
generemos.
• Al terminar, se van liberando la memoria en la pila, empezando desde la última función
creada hasta la primera, la cual será la ultima en liberarse.

Ventajas
La recursión puede reducir la complejidad del tiempo.

Si calcula la secuencia de Fibonacci hasta un número n utilizando la recursión en lugar de la


iteración, el tiempo para completar la tarea en comparación con el del enfoque iterativo fue mucho
mayor.

La recursión agrega claridad y reduce el tiempo necesario para escribir y


depurar código.

Si sabe que su entrada en una función va a ser pequeña, entonces la recursión es sin duda una
buena opción. Sin embargo, si su entrada es lo suficientemente grande, el sacrificio de velocidad
y memoria en aras de la claridad se vuelve mucho menos funcional.

La recursión es mejor en Tree Travesal

Una de las formas más eficientes de atravesar estos árboles cuando se busca una hoja (o nodo)
específica es siguiendo recursivamente una sola rama hasta el final de esa rama hasta que
encuentre el valor que está buscando.

Desventajas
La recursión utiliza más memoria.

Debido a que la función tiene que agregar a la pila con cada llamada recursiva y mantener los
valores allí hasta que finalice la llamada, la asignación de memoria es mayor que la de una función
iterativa.

La recursión puede ser lenta.

En realidad, es bastante difícil escribir una función recursiva donde la velocidad y la memoria
serán menores que las de una función iterativa que completa la misma tarea.

Cuando un procedimiento llama a otro procedimiento y éste causa que el procedimiento original
sea invocado, se conoce como recursión indirecta
CONCLUSIONES:

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 todas la situación en la cual la solución pueda ser expresada como
una consecuencia 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 emocionó en algunos algoritmos para utilizar la recursividad en cuál se utilizó
la de calcular un número factorial es un ejemplo más común que se encontró esperando que el
trabajo contenga la información necesaria para así cumplir con todas las características que se
van a calificar.
BIBLIOGRAFÍA

https://es.slideshare.net/jessica_contreras/recursividad-34877278
https://ocw.bib.upct.es/pluginfile.php/7820/mod_resource/content/1/085_112_capitulo_6_RECURRENCIA.pdf
https://es.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/recursion
https://www.netmentor.es/entrada/Recursividad-programacion
https://definicionabc.com/recursividad/
INSTITUTO TECNOLÓGICO SUPERIOR DE ALVARADO
RÚBRICA DE EVALUACIÓN PARA REPORTE DE INVESTIGACIÓN
Carrera: ING. SISTEMAS COMPUTACIONALES Nombre de la asignatura:
Unidad: Tema:

Nombre alumno: Observaciones:


1.- Jesus Gerardo Hernandez Magaña 1 .-
2.- 2 .-
3.- 3 .-
4.- 4 .-
5.- 5 .-

NIVEL DE DESEMPEÑO*
DESEMPEÑO VALOR
CATEGORIA EXCELENTE NOTABLE BUENO SUFICIENTE
INSUFICIENT ALCANZADO
100% - 95% 94% - 85% 84% -75% 74% -70%
E NA
Contenido -- 50 %
Cumple con todos los aspectos solicitados por el docente:
introducción, objetivo general, objetivo específico, alcances, 0%
limitaciones, justificación, planteamiento del problema, hipótesis.
50%
Comprensión del tema -- 10 %
El estudiante escribe un aporte de lo que entendio en el texto, se
observa que el reporte favorece la comprensión del tema, 0%
retención y atención del estudiante .
10%
Nivel de abstracción -- 20 %
Centra su reporte de acuerdo a las ideas principales de la
investigación, tiene relación con lo que investigó. 0%
20%
Redacción -- 10 %
No hay errores de gramática, ortografía o puntuación. 0%
10%
Legibilidad -- 10 %
Esta escrito con letra de molde, legible, claridad en el texto y
limpieza. 0%
10%
Puntualidad
Se entrega en la fecha y hora programada.
FALSO
0% 0% -5% -10% -15% -20%
Tolerancia
Fecha, pero No se acepta
Fecha y hora Un día de Dos días de máxima
fuera de hora después de la
programada retraso retraso (tres días de
programada tolerancia
retraso)

OBTENIDO 0% TOTAL 0%

También podría gustarte