Está en la página 1de 12

Índice

Introducción .................................................................................................... Pag.3


Recursividad ................................................................................................... Pag.4
Tipos de recursividad ..................................................................................... Pag.4
Características ................................................................................................ Pag.5
Ventajas ........................................................................................................... Pag.5
Desventajas ..................................................................................................... Pag.5
Aplicaciones ................................................................................................... Pag.6
Conclusión .................................................................................................... Pag.12
Biografías ..................................................................................................... Pag.13
INTRODUCCIÓN
En esta investigación realizamos la búsqueda exhaustiva de a todo aquello que se
refiere a la recursividad, y como se utiliza en el lenguaje de programación para llevar
acabo ciertos métodos, colocamos sus características más importantes así como
las ventajas y desventajas que el método de recursividad tiene al momento de
ejecutar algún programa desarrollado, ejemplificamos con diagramas algunos
ejemplos de sus aplicaciones, también añadimos los tipos de recursividad que se
pueden encontrar y como se utilizaría cada uno de ellos, el por qué se debería de
utilizarse este método también fue plasmado finalmente se redactó nuestros
aprendizajes y aquello que fue más interesante.
Recursividad
Un algoritmo para resolver un problema de modo que resuelva una instancia más
pequeña del mismo problema, a menos que el problema sea tan pequeño que lo
podamos resolver directamente. Por otra parte podemos decir que es la capacidad
que existe en este lenguaje de crear funciones que llamen a otras funciones.
De esta manera se evita el uso de bucles u otros iteradores. Se trata de una
técnica de programación que permite crear instrucciones que se repitan un
número n de veces, por eso se trata de una forma de programación que
permite evitar el uso de estructuras de datos repetitivas.

Se utiliza para un problema de tamaño N, este puede ser dividido en problemas de


menor tamaño pero cuya solución es similar a la del problema original, conocidas
las soluciones de estos problemas de tamaño menor, podemos obtener la solución
al problema de tamaño N original a partir de estas soluciones más pequeñas. Los
casos en que el problema es tan pequeño que su solución es trivial se conocen
como casos base. Como así puede haber distintos tipos de problemas con distintas
soluciones, también hay distintos tipos de recursividad los cuales analizaremos a
continuación.

Tipos de recursividad
Recursividad múltiple.

Más de una llamada recursiva en el cuerpo de la función

Recursividad directa o simple.

Cuando un procedimiento incluye una llamada a sí mismo. Este tipo de recursividad


se caracteriza porque puede pasarse fácilmente a una solución iterativa.

Recursividad indirecta.

Cuando en una secuencia de llamadas a métodos, se regresa al inicial u original

Recursividad anidada.
En algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí
misma

Características
 Un subprograma es recursivo cuando se invoca a sí mismo. !
 La recursividad es análoga al principio de inducción.
 Todo proceso recursivo puede convertirse en iterativo y viceversa.
 Los algoritmos recursivos son más simples y compactos que sus
correspondientes iterativos, sin embargo, su ejecución en un ordenador es
más lenta y requiere más recursos.
 Para diseñar un algoritmo recursivo hay que tener en cuenta lo siguiente:

 Suponer que ya existe un algoritmo para resolver una versión reducida del
problema.
 Identificar casos base.
 Descomponer el problema en subproblemas que se puedan resolver con el
algoritmo pre-existente y cuya solución vaya aproximándose a los casos
base.
 Probar, de manera informal, que los casos base y los generales encuentran
solución con el algoritmo diseñado.

Ventajas
1. Soluciones a problemas complejos de una manera más fácil, simple, clara y
elegante.
2. No es necesario definir la secuencia de pasos exacta para resolver el problema.
3. Podemos considerar que “tenemos resuelto el problema” (de menor tamaño).
4. La eficiencia de la recursividad reside en el hecho de que se puede usar para
resolver problemas de difícil solución iterativa.
5. Algunos problemas son más sencillos de implementar usando la recursividad.
6. Presenta una facilidad para comprobar y verificar que la solución es correcta.

Desventajas
1. Ineficiencia.
2. Sobrecarga asociada con las llamadas a subalgortimos.
3. Una simple llamada puede generar un gran número de llamadas recursivas.
(Fact(n) genera n llamadas recursivas).
4. Puede que la claridad del algoritmo no compense la sobrecarga del mismo
5. Algoritmos recursivos ineficientes.
6. Es necesario la creación de muchas variables lo que puede ocasionar problemas
en memoria.
7. En general, una función recursiva toma más tiempo en generarse que una
iterativa.
8. Debido a las llamadas constantes a métodos, a la creación de variables
dinámicas en la pila y la duplicación de las variables.

Aplicaciones
El factorial de un número n se define como n! =1*2*3*4*5*6*...*n Considerar el caso cuando
n=5 y En este caso: 5! = 5 * 4! , 4! = 4 * 3!, 3! = 3 * 4! De esta forma se tiene: n! = n * (n-1)! El caso
base en el factorial por definición es: 0! = 1

Multiplicación
Primero se definen las dos variables a utilizar que tomaran valores con los cuales aremos la
multiplicación como por ejemplo:

M(Int A=5, int B=5) Pondremos de qué tipo de valores son en este caso son (int).

Seguidamente se pone la condición la cual empieza con un (if) esta servirá para definir el valor que
tendrá la variable (B)

If (B==1) el valor debe ser 1 por que todo numero multiplicado por 0 nos dará 0

Si el valor de B no es igual a uno nos retornara el valor de A que es 5

Return A;

Pondremos seguidamente la condición (else) y añadiremos que pasara si el valor de B no es igual a


0

}else{

Return A + M(A,B-1); // En esta parte estamos indicando que el valor de A se sumara de nuevo con
su mismo valor que en primera instancia seria 10 y que al valor de B sele ira restando una unidad
hasta que su valor tienda a 1 de esta manera el número final que nos retornara será el 25 que es el
resultado de la multiplicación 5x5=25.

Potencia de un número
Primero se definen las dos variables a utilizar que tomaran valores con los cuales aremos la
multiplicación como por ejemplo:

M(Int A=2, int B=3) Pondremos de qué tipo de valores son en este caso son (int).

Seguidamente se pone la condición la cual empieza con un (if) esta servirá para definir el valor que
tendrá la variable (B)

If (B==1) el valor debe ser 1 ya que todo elevado a la potencia 1 es el mismo numero

Si el valor de B no es igual o mayor a 1 nos retornara el valor que se haya guardado en A

Return A;

Se agrega otra condición que será cuando la variable B=0

If (B==0) // todo número elevado a la 0 es igual a 1

Return 1;

Pondremos seguidamente la condición (else) y añadiremos que pasara si el valor de B no es igual a


0o1

}else{

Return A * M(A,B-1); // En esta parte estamos indicando que el valor de A se multiplicara de nuevo
con su mismo valor y que al valor de B sele ira restando una unidad hasta que su valor tienda a 1
de esta manera el número final que nos retornara será el 8 que es el resultado de la multiplicación
23=8.

Buscar un elemento
void buscarElemento (arreglo, valor, pos) //definimos los parámetros

inicio

si pos = arreglo.longitud // si la posición es igual a la longitud del arreglo y no se a encontrado el


número que se busca se imprimirá.

IMPRIMIR “No encontrado”

otro si val = arreglo[pos] // si el valor se encuentra en los elementos del arreglo se imprimirá el
mensaje. Y también en qué posición se encuentra.
IMPRIMIR “Elemento encontrado”

otro

buscarElemento (arreglo, valor,pos + 1)// aquí se indica que se buscara el elemento en los valores
del arreglo y se ira recorriendo cada posición una por una

fin

buscarElemento(arreglo,valor, 0)// se iniciara en la posición 0

SUMA
Potencia

Multiplicación
Factorial

Buscar elementos
Conclusión
En este recorrido en el esquema de lo que es la recursividad, fue interesante como
es que nos dimos cuenta de sus funciones características y que tipos de
recursividad existen también fue bastante interesante el descubrir en que momentos
se puede implementar, fuera de que tal vez no es el mejor método a utilizar en
ciertos casos, no se puede negar la utilidad que este método tiene, cabe mencionar
también que este método puede llegar a ser un poco confuso para aquellos que
cuenten con un pensamiento un poco más matemático pero sin duda con un poco
de estudio y análisis se puede comprender a la perfección.
Bibliografía

 Khan Academy. (22 de septiembre de 2019). Propiedades de los algoritmos recursivos


(artículo) | Khan Academy. https://es.khanacademy.org/computing/computer-
science/algorithms/recursive-algorithms/a/properties-of-recursive-algorithms
 Tokio School. (11 de mayo de 2022). ¿Qué es la recursividad en la programación con
Java | Tokio. https://www.tokioschool.com/noticias/recursividad-programacion-java/
 InfSeg. (4 de enero de 2017). Recursividad: ¿Cuándo debo utilizarla? -
InfSeg. https://infseg.com/informatica/recursividad-cuando-debo-utilizarla/
 Garcia, M. (2018). Funciones tipos de funciones y recursividad definición. UTM. (Obra
original publicada en 2018)
 Academia azc. (2017). Recursividad y eficiencia. azc. (Obra original publicada en 2017)

También podría gustarte