Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(Matemáticas Discretas)
Facultad de Ingeniería
Sección #1 / Semestre #5
Cartagena
2021
Índice
Introduccion……………………………………………………………………………………...3
Contenido…………………………………………………………………………………………4
Conclusion……………………………………………………………………………………....10
Bbibliografia………………………………………………………………………………….....11
Introducción
La recursividad más que nada se enfoca a que dicha función tiene varios ciclos repetitivos.
sus funciones, ventajas y desventajas para poder adquirir más conocimientos sobre el tema,
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
expresan con su misma definición por lo tanto vamos a decir que la recursividad consiste en
funciones que se llaman a sí mismas. básicamente una función recursiva no es más que una
función normal que dentro tiene una llamada a la misma función que está definiendo y esto es
muy útil ya que nos permite pensar en ciertos problemas de una forma muy sencilla, vamos a ver
primero el típico ejemplo de la factorial a pesar de ser un ejemplo súper común es muy útil para
multiplica n por cada número anterior a él que sea mayor que cero, por ejemplo, si queremos
4! = 4*3*2*1
5! = 5 * 4!
Si nos fijamos la definición del factorial de 5 incluye dentro la definición del factorial de 4 por lo
recursividad, si generalizamos está definición para que sirva para cualquier número podemos
definición es una definición recursiva válida, pero si la intentamos utilizar a la práctica para
factorial de -1 y así hasta el infinito, a la práctica que vamos a crear un bucle infinito y todo
porque nos falta algo clave de cuando pensamos en algoritmos recursivos, el caso base.
El caso base es la condición de parada de nuestra recursión, es el punto donde paramos dónde
dejamos de llamar a la función y decimos hasta aquí hemos llegado, en el caso del factorial este
punto de parada sería el factorial de 0 si consideramos un caso donde definimos que el factorial
ningún factorial de un número más pequeño que cero, es simplemente 1 así conseguimos
Si todos los números de una factorial dependieran de las factoriales anteriores siempre iriamos
hacia atrás, pero cuando llegamos a factorial de 0 cortamos ese camino, todo recurso necesita un
caso base, si queremos que pueda terminar al igual que la mayoría de bucles tenemos un punto
de finalización de la interacción vamos iterando hasta que llega al valor o hasta que se cumple
cierta condición, dicho esto el código que calcula la factorial de un número sería el siguiente:
If n = 0:
return 1
else:
return n * factorial (n - 1)
Como podemos ver tenemos dos casos, uno define el caso base y otro define el caso recursivo de
esta forma se pueden expresar algoritmos de forma muy elegante, ya que con recursividad se
simplifica la forma de pensar en ellos, otro ejemplo muy concurrido es el de calcular la secuencia
Fibonacci es una secuencia donde cada valor de la secuencia se puede definir como la suma de
los dos números anteriores de esta; La secuencia empieza con 0 y con 1 y a partir del tercer
infinito.
0 1 1 2 3 5 8 13 21 34
Como vemos podemos definir el caso recursivo de Fibonacci como la suma de los dos Fibonacci
anteriores y los casos base serían los dos primeros elementos, el número 0 y el número 1. En esta
situación son los dos primeros porque necesitamos mínimo dos elementos para poder calcular el
primer número de esa recursión; Dependemos de la suma de los dos anteriores por lo tanto el
programa que calcula el número i-ésimo de la secuencia de Fibonacci de puede expresar con esta
función recursiva:
If n <= 1:
Return n
Else:
Return(Fibonacci (n) + Fibonacci (n - 2) )
La recursividad es una herramienta que nos permite aplicar una metodología a la hora de crear
algoritmos, qué es la de expresar los problemas en problemas más pequeños, al final puede ser
un problema grande que es un conjunto de problemas pequeños que son cada vez más simples
hasta obviamente llegar al caso base, de esta forma conseguirás definiciones recursivas de un
Algo que me gustaría nombrar es que, en el paradigma funcional, digamos los lenguajes que son
puedes iterar, por lo tanto, se utiliza la recursividad como sustitución a los clásicos bucles y
además hay problemas muy clásicos de recursividad. La recursividad tiene mucho potencial
simplifica mucho la forma de pensar sobre muchos problemas, pero tiene algunas cosas de las
que es difícil que no son tan buenas, por ejemplo, el nivel de optimización, utilizar recursividad
Las llamadas a funciones acostumbran hacer más difíciles de utilizar las variables en un bucle,
por lo que esa legibilidad al usar algoritmo recursivo se pierde un poco en optimización y
rapidez, además en el caso hipotético que se hagan muchísimas llamadas recursivas el algoritmo
puede provocar un desbordamiento de pila, básicamente causado por las múltiples llamadas que
Otro problema que puedes encontrar es que sale con algo de Fibonacci, por ejemplo, se pueden
llegar a repetir cálculos en el caso de calcular el cuarto número, decimos llamando a calcular los
llamado al segundo ya dos veces, es decir estamos calculando múltiples veces algunos números
de Fibonacci cosa que realmente sería innecesaria y existen técnicas para solucionar estos
problemas como la memorización o traducción del algoritmo recursivo a uno iterativo para evitar
estas repeticiones.
Por otro lado, la función de Ackermann empieza a raíz de 1998 en dónde Wilhelm Ackermann
Considero una función doblemente recursiva está por m, n, p de tres variables. En la notación de
Conwy Ackermann demostró que se trata de una función recursiva que no es primitiva recursiva
esa definición fue simplificada por Rosa Peter y Rafael Robinson a la versión de dos variables.
Rosa Peters también demostró que la doble recursión no se puede reducir a recursión primitiva y
que De igual forma la triple recursión no se puede reducir a recursión primitiva y doble
con frecuencia para comparar compiladores en cuanto a su habilidad para optimizar la recursión;
Sin embargo, hay más problemas que se pueden beneficiar de la recursividad y unos de esos es el
Históricamente la leyenda cuenta que en un templo indio un rey mandó a instalar 64 discos de
oro y les dio unas instrucciones a los monjes para que manipularan los discos, la leyenda cuenta
que cuando el último disco fuese colocado en la tercera torre el fin del mundo llegaría. En
esencia, en el problema de las Torres de Hanoi tenemos tres torres donde hay discos apilados. En
un momento inicial tenemos una torre con los discos apilados en forma de pirámide dónde cada
disco es más pequeño que el que tiene debajo, en este problema de lógica tenemos que pasar la
ordenada del disco mas pequeño al más grande, solo podemos mover un disco alavés y un disco
no puede descansar sobre otro que sea más pequeño que él.
Para resolverlo es muy sencillo si se quiere mover n discos de una pirámide a otra lo mejor que
se puede hacer es mover en uno o varios pasos los primeros n - 1 disco en la torre de medio qué
es la torre auxiliar, después mover el disco de abajo a la tercera torre y después otra vez en uno o
varios pasos mover los discos que tenemos en la torre de medio a la torre final.
Para saber cuántos pasos deben correr como mínimo para desplazar los discos podemos utilizar
un modelo inductivo:
Para mover un disco vamos a necesitar 1 paso, para mover dos discos vamos a necesitar mover la
sub torre de 1 disco: 1 paso, mover el disco de abajo: 1 paso y mover la sub torre de 1 disco: 1
paso; en total son 3 pasos. Para mover tres discos vamos a necesitar mover la sub torre de 2
discos: 3 pasos, mover el disco de abajo: 1 paso y mover la sub torre de 2 discos: 3 pasos; en
total son 7 pasos. Para mover cuatro discos vamos a necesitar mover la sub torre de 3 discos: 7
pasos, mover el disco de abajo: 1 paso y mover la sub torre de 3 discos: 7 pasos; en total son 15
pasos.
Dado esto podemos inducir que el número de pasos para mover n discos es siempre P(n) =2^n-1,
con este trabajo logramos entender que la recursividad no es más que una herramienta como
cualquier otra con sus pros y contras y que lo importante es entender cómo podemos
Se puede usar en toda situación en la cual la solución pueda ser expresada como una secuencia
se pudo notar la recursividad también se puede trabajar mediante pilas, así como también se
numero factorial es un ejemplo más común que se encontró. Esperando que el trabajo contenga
la información necesaria para así cumplir con las características que se van a calificar.
Bibliografía
https://www.ugr.es/~eaznar/funcion_ackermann.htm
http://picandocodigo.net/2008/recursividad-en-programacion/
matematica.
Perez, J. G. (2001). Hanoi Towers. Madrid: Revista de comunicacion Vivat Academia. Obtenido
de Dialnet.