Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


actividad 4 de algoritmos, Ejercicios de Algoritmos y Programación

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Tipo: Ejercicios

2022/2023

Subido el 14/05/2023

adrian-alejandro-tovar-escamilla
adrian-alejandro-tovar-escamilla 🇲🇽

5 documentos

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Algoritmos Recursivos
ALGORITMOS COMPUTACIONALES
Maestra: JESSICA NATALIA MARTINEZ BALDERAS
Adrián Alejandro Tovar Escamilla-1995863-ITS
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga actividad 4 de algoritmos y más Ejercicios en PDF de Algoritmos y Programación solo en Docsity!

Algoritmos Recursivos

ALGORITMOS COMPUTACIONALES Maestra: JESSICA NATALIA MARTINEZ BALDERAS Adrián Alejandro Tovar Escamilla- 1995863 - ITS

Introducción

  • La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene otra muñeca dentro. Y así susesivamente, una dentro de otra.
  • 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.

Desarrollo

  • Cuando se quiere calcular la demanda de recursos de un algoritmo definido recursivamente, la función complejidad que resulta no está definida sólo en términos del tamaño del problema y algunas constantes, sino en términos de la función complejidad misma.
  • Además no es una sola ecuación, dado que existen otras (al menos una) que determinan la cantidad de recursos para los casos base de los algoritmos recursivos. Dada esta situación, para poder obtener el comportamiento del algoritmo, es necesario resolver el sistema recurrente obtenido.

Desarrollo

Ejemplo: Fibonacci

  • Considerando la suma Fibonacci(num- 1 ) + Fibonacci (num- 2 )como operación básica, y el costo 1 de los 2 casos base podemos construir la ecuación recurrente para calcular la complejidad del algoritmo: int Fibonacci(int num) { if (num ==0) return 0; else if (num == 1) return 1; else return Fibonacci(num-1) + Fibonacci (num-2); }

Desarrollo

Ejemplo: Torres de Hanói

  • Considerando la operación Mover_de(Src,Dst)como operación básica, y tomado un coste de 0 cuando N= 0 , podemos construir la ecuación recurrente para calcular la complejidad del algoritmo. Hanoi(N, Src, Aux, Dst) { if(n>0) { Hanoi(N - 1, Src, Dst, Aux); Mover_de(Src,Dst); Hanoi(N - 1, Aux, Src, Dst); } return; }

Desarrollo

¿Por qué escribir programas recursivos?

  • Son mas cercanos a la descripción matemática.
  • Generalmente mas fáciles de analizar
  • Se adaptan mejor a las estructuras de datos recursivas.
  • Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples.

Desarrollo

Recursión vs iteración

  • Repetición ➢Iteración: ciclo explícito (se expresa claramente) ➢Recursión: repetidas invocaciones a método
  • Terminación ➢Iteración: el ciclo termina o la condición del ciclo falla ➢Recursión: se reconoce el caso base
  • En ambos casos podemos tener ciclos infinitos
  • Considerar que resulta más positivo para cada problema

Desarrollo

Otros conceptos

  • Cuando un procedimiento incluye una llamada a sí mismo se conoce como recursión directa.
  • Cuando un procedimiento llama a otro procedimiento y éste causa que el procedimiento original sea invocado, se conoce como recursión indirecta.

Conclusión

  • La recursividad es un recurso que se usa a si mismo, puede ser usado en matemáticas, en lógica, en programación.
  • En programación puede ser visto en una función como en las matemáticas, EJ: una función que dentro de ella puede llamarse a si misma, o en una estructura de datos, Ej: un nodo conectado a otro que se define con la misma estructura de nodo
  • Es importante porque permite resolver de manera elegante algunos problemas haciendo uso de código mas eficiente e inteligente

Bibliografía

  • uniwebsidad. (s. f.). 18.6. Algoritmos recursivos y algoritmos iterativos (Algoritmos de Programación con Python). Recuperado 28 de octubre de 2022, de https://uniwebsidad.com/libros/algoritmos-python/capitulo-18/algoritmos-recursivos-y-algoritmos- iterativos
  • Algoritmo recursivo. (2017, 5 diciembre). elConspirador.com. https://www.elconspirador.com/2013/12/27/algoritmo-recursivo/
  • Picand, Y. D. D. (s. f.). Algoritmo recursivo : definición de Algoritmo recursivo y sinónimos de Algoritmo recursivo (español). sensagent - 2005 - 2015. Recuperado 28 de octubre de 2022, de http://diccionario.sensagent.com/Algoritmo+recursivo/es-es/
  • Walton, A. (2022, 17 febrero). Recursividad en Java con Ejemplos. Java desde Cero. https://javadesdecero.es/intermedio/recursividad-con-ejemplos/
  • ¿Qué es la recursividad o recursión? - Un ejemplo con JavaScript. (2016, 27 enero). campusMVP.es. https://www.campusmvp.es/recursos/post/Que-es-la-recursividad-o-recursion-Un- ejemplo-con-JavaScript.aspx