Está en la página 1de 5

INTRODUCCION

El rea de la programacin es muy amplia y con muchos detalles. Los


programadores
necesitan
ser
capaces
de
resolver
todos
los problemas que se les presente a travs del computador aun cuando
en el lenguaje que utilizan no haya una manera directa de resolver los
problemas. En el lenguaje de programacin C, as como en otros
lenguajes de programacin, se puede aplicar una tcnica que se le dio el
nombre de recursividad por su funcionalidad. Esta tcnica es utilizada en
la programacin estructurada para resolver problemas que tengan que
ver con el factorial de un nmero, o juegos de lgica. Las asignaciones
de memoria pueden ser dinmicas o estticas y hay diferencias entre
estas dos y se pueden aplicar las dos en un programa cualquiera.

La recursividad es una tcnica muy utilizada en programacin


informtica. Se suele utilizar para resolver problemas cuya solucin se
puede hallar resolviendo el mismo problema, pero para un caso de
tamao menor.
Cuando en informtica se escribe un programa con un algoritmo
recursivo, en las propias sentencias del algoritmo hay una llamada a s
mismo, es decir una de las sentencias llama al algoritmo recursivo en el
que est insertada, aunque para solucionar un caso ms sencillo.

Los mtodos recursivos se pueden usar en cualquier situacin en la que


la solucin pueda ser expresada como una sucesin de pasos o
transformaciones gobernadas por un conjunto de reglas claramente
definidas.

DESARROLLO DEL TEMA

RECURSIVIDAD
Se dice que un Objeto es recursivo cuando forma parte de recursivo s
mismo. Permite definir un nmero infinito de objetos mediante un
enunciado finito.
La recursividad es la propiedad que tienen los procedimientos y
funciones de llamarse a s mismos para resolver un problema. Permite
describir un nmero infinito de operaciones de clculo mediante sin un
programa recursivo finito implementar de forma explcita estructuras
repetitivas.
La recursividad es una tcnica de programacin importante. Se utiliza
para realizar una llamada a una funcin desde la misma funcin. Como
ejemplo til se puede presentar el clculo de nmeros factoriales. l
factorial de 0 es, por definicin, 1. Los factoriales de nmeros mayores
se calculan mediante la multiplicacin de 1 * 2 * ..., incrementando el
nmero de 1 en 1 hasta llegar al nmero para el que se est calculando
el factorial.
La recursividad y la iteracin (ejecucin en bucle) estn muy
relacionadas, cualquier accin que pueda realizarse con la recursividad
puede realizarse con iteracin y viceversa. Normalmente, un clculo
determinado se prestar a una tcnica u otra, slo necesita elegir el
enfoque ms natural o con el que se sienta ms cmodo.
Claramente, esta tcnica puede constituir un modo de meterse en
problemas. Es fcil crear una funcin recursiva que no llegue a devolver
nunca un resultado definitivo y no pueda llegar a un punto de
finalizacin. Este tipo de recursividad hace que el sistema ejecute lo que
se conoce como bucle "infinito"
int funcionRecursiva (int inicio, int limite) {
int retorno;
if (inicio > limite)
retorno = 1;
else
if (inicio == limite)
retorno = 1;
else
retorno = inicio * funcionRecursiva(inicio+1, limite);
return retorno;
{

TIPOS DE RECURSIVIDAD
RECURSIVIDAD SIMPLE
Aquella en cuya definicin slo aparece una llamada recursiva. Se puede
transformar con facilidad en algoritmos iterativos.
Ejemplo para ver cmo funciona la recursividad simple:
define-nueva-instruccion recursiva como inicio
si frente-libre entonces inicio
avanza;
recursiva;
deja-zumbador;
fin;
fin;
...
Lo que esta instruccin hace, es que karel avanzara mientras el frente
este libre entonces la instruccin se llamara a s misma, y la instruccin
deja zumbador se guardar en la pila de llamadas, esto suceder hasta
que el frente deje de estar libre, entonces se ejecutara la instruccin
deja-zumbador; las veces que se haya guardado en la pila de llamadas.

RECURSIVIDAD CON PARMETROS


La Recursividad con Parmetros es igual que la Recursividad Simple, con
la diferencia de que la complejidad que exista en la pila de llamadas es
eliminada, y colocada como una instruccin base. En cada paso de la
recursin, se aumenta uno, y cuando llegas a la base, tiene un nmero
que tal vez puedas usar para tu beneficio. No te olvides que tambin
puedes usar la funcin precede y si-es-cero y que en la llamada
recursiva puedes llamarla con el parmetro sin modificar.
Enseguida se muestra un cdigo usando Recursividad con Parmetros
(izquierda) para hacer que Karel avance mientras el frente este libre y al
final deje en zumbadores la cantidad de espacios que avanzo. Enseguida
el mismo cdigo usando Recursividad Simple (derecha).

Como vieron en la Recursividad con Parmetros se sustituy la sentencia


Si/Entonces por Si/Entonces/Sino, se agreg un parmetro (n) y la
funcin sucede.
Hay que destacar que en la pila de llamadas, adems de la instruccin
que sigue, tambin se guarda el valor actual del parmetro.
Si solo se quiere que Karel avance y al final deje la cantidad de espacios
avanzados en zumbadores, es mucho ms sencillo utilizar la
Recursividad Simple, pero hay otros casos en donde se necesitar
utilizar parmetros, Es ah donde la Recursividad con Parmetros es
imprescindible.
RECURSIVIDAD MIXTA
Si ya dominas los dos tipos de Recursividad anteriores, esto ser muy
fcil para ti, ya que la Recursividad Mixta no es ms que usar los dos
tipos de Recursividad al mismo tiempo.
Veamos el siguiente problema:

Teniendo un mundo como el de arriba y con zumbadores infinitos


en la mochila, coloca en 1,1 el resultado de la multiplicacin.
Para este problema usaremos dos instrucciones, uno con Recursividad
Simple y el otro con Parmetro.

Karel iniciar en la posicin 1,1 Orientado al Norte.


La mecnica de solucin es la siguiente: Se van a tomar todos los
zumbadores de una posicin con recursividad con parmetros, para que
al llegar a la base, el parmetro tenga el nmero de zumbadores que
hay en dicha posicin, posteriormente, ese nmero se pasa como
parmetro a la instruccin recursiva simple (si, aunque la recursividad es
simple, tambin tiene parmetro), y en cada paso, se le va a llamar
recursivamente con el mismo parmetro, de esa forma, en la pila de
llamadas, el parmetro va a estar tantas veces como zumbadores haya
en la segunda posicin y LISTO!.
Enseguida un fragmento de las instrucciones:
...
define-nueva-instruccion multiplica (n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
multiplica(n);
repetir n veces inicio
deja-zumbador;
fin;
fin
sino inicio
veAlInicio;
fin;
fin;
define-nueva-instruccion cuenta (n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
cuenta( sucede (n) );
fin
sino inicio
avanza;
multiplica (n);
fin;
fin;
...

Esta casi completa, pero le falta implementar la instruccin veAlInicio


(que debe ser de lo ms trivial) y la instruccin veAlProblema, adems
es posible que necesites de la instruccin gira-derecha. Tal vez en un
principio no entiendas bien, revisa el cdigo paso a paso hasta que lo
comprendas,

También podría gustarte