Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Recursividad

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

1. ¿Qué es la recursividad?

La Recursividad es una técnica de programación el cual nos permite solucionar


problemas complejos por medio de partes. Para tener el panorama más claro lo
que hace la recursividad es dividir problemas complejos en partes más pequeñas
que puedan ser manejables y que sean idénticas al problema principal.

La recursividad suele funcionar normalmente auto ejecutando funciones idénticas


al problema principal. Esta característica hace que la recursividad cuente con dos
elementos los cuales son los siguientes:

 Un caso Base, el cual es el caso al que toda función recursiva tiene que
acabar llegando.
 Un caso Recursivo es lo que suele ser una función que es capaz de auto
invocarse. La clave de esta auto invocación es que los elementos

La recursividad es muy usada en la programación y lo que nos permite es crear un


código que sea más simple que el primero pero al mismo tiempo sea entendible.
La recursividad es entendida como una función que se llama a sí misma, sin
embargo hay que tener unos ciertos cuidados al realizar éste tipo de funciones
porque debemos crear una parada. Como hemos mencionado antes el hecho de
crear una función que se llame a sí misma es necesario que ésta función pueda
parar para que no se esté llamando así misma una y otra vez de manera infinita
por lo tanto debemos de crear lo que en programación se llama condición de
terminación.

La condición de terminación lo que hace dentro de una función es que hace que
deba de existir un caso donde esa función deje de llamarse a sí misma, en sí que
la ejecución recursiva que realiza la función llegue a parar.

Como ya hemos visto qué es lo que hace la recursividad, ahora podemos dar
algunos de ejemplos de lo útil que puede llegar a ser el uso y manejo del mismo.
El uso de la recursividad llega a ser una técnica que es idónea para las estructuras
de datos los cuales parten de un nodo raíz y del cual se van generando otros
nodos que vendrían a ser llamados nodos hijos. En la actualidad existen
algoritmos que se basan en la recursividad entre los cuales tenemos el
backtracking o también tenemos la búsqueda con poda

1.1. Backtracking

Backtracking (o Vuelta Atrás) es una técnica de recursión intensiva para resolver


problemas por etapas, que utiliza como árbol de decisiones la propia organización
de la recursión. Cuando se “avanza” de etapa se realiza una llamada recursiva, y
cuando se “retrocede” lo que se hace es terminar el correspondiente proceso
recursivo, con lo que volvemos al estado anterior por la pila de entornos creada
en la recursión. Como el árbol de decisiones no es una estructura almacenada en
memoria, entonces se cree que el Backtracking utiliza un árbol implícito
habitualmente se denomina árbol de expansión o espacio de búsqueda. Por lo
tanto podemos afirmar que el Backtracking es un método recursivo para buscar de
soluciones por etapas de manera exhaustiva, usando prueba y error para obtener
la solución completa del problema añadiendo decisiones a las soluciones parciales

1.1.1. El uso del Backtracking

De una forma simple el Backtracking es como un recorrido en profundidad del


árbol de expansión; se recorre en preorden: primero se evalúa el nodo raíz o
actual, y después todos sus hijos de izquierda a derecha. Por tanto, hasta que no
se termina de generar una solución parcial (sea válida o no) no se evalúa otra
solución distinta. En los nodos del nivel k del árbol se encuentran las soluciones
parciales formadas por k etapas o decisiones. Debemos de tomar en cuenta que el
árbol no está almacenado realmente en memoria, solo se recorre a la vez que se
genera, por lo que todo lo que quiera conservarse por ejemplo las decisiones
tomadas, las soluciones ya encontradas al problema y otros deben ser guardados
en alguna estructura adicional.
Por lo tanto, debido a que la cantidad de decisiones a tomar y evaluar puede ser
muy elevada, si es posible es conveniente tener una función que determine si a
partir de un nodo se puede llegar a una solución completa, de manera que
utilizando esta función se puede evitar el recorrido de algunos nodos y por tanto
reducir el tiempo de ejecución.

1.2. Búsqueda por poda

La búsqueda por poda es muy parecida al backtracking sin embargo hay una
característica que le hace diferente el cual es la posibilidad de generar nodos
siguiendo distintas estrategias. El diseño Ramificación y Poda en su versión más
sencilla puede seguir un recorrido en anchura (estrategia LIFO) o en profundidad
(estrategia FIFO), o utilizando el cálculo de funciones de coste para seleccionar el
nodo que en principio parece más prometedor (estrategia de mínimo coste o LC).
Además de estas estrategias, la técnica de Ramificación y Poda utiliza cotas para
podar aquellas ramas del árbol que no conducen a la solución óptima. Para ello
calcula en cada nodo una cota del posible valor de aquellas soluciones
alcanzables desde ése. Si la cota muestra que cualquiera de estas soluciones
tiene que ser necesariamente peor que la mejor solución hallada hasta el
momento no necesitamos seguir explorando por esa rama del árbol, lo que
permite realizar el proceso de poda.

Algoritmo para un factorial recursivo

var txt1;

txt1 = parseInt (prompt("Favor ingresar el numero"));

function factorialRecursivo (f){

if (f == 0)

return 1;

else

return f *factorialRecursivo (f-1);

}
console.log("El factorial de ", txt1,"es:", factorialRecursivo(txt1));

Ejemplo de recursividad de factorial Suma

<html>
<head>
<title>RECURSIVIDAD EN UNA SUMA</title>
<!-Encontrar la suma factorial de un número->

<script type=”text/javascript”>
function contar (elemento){
If (elemento==0){
return 0;
}
Return (elemento + (contar(elemento-1)));
}

</script>
<head>
<body>

<script type=”text/javascript”>
var a;
var b;
b=parseInt(prompt(“Introduce un número”));
a=contar(b);
document.write(“El factorial es : “+a);
</script>

</body>
</html>

También podría gustarte