Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tipos de recursividad
Recursividad múltiple.
Recursividad indirecta.
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
Return A;
}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
Return A;
Return 1;
}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
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
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