You are on page 1of 9

Recursividad vs Iteracin

Carrera de Ingeniera Informtica

Aspectos que hay que considerar al decidir cmo implementar la


solucin a un problema si es de forma iterativa o de forma recursiva:
La carga computacional (tiempo de CPU y espacio en memoria)
asociada a las llamadas recursivas.
La redundancia (algunas soluciones recursivas resuelven un problema
en repetidas ocasiones).
La complejidad de la solucin (en ocasiones, la solucin iterativa es
muy difcil de encontrar).
La concisin, legibilidad y elegancia del cdigo resultante de la
solucin recursiva del problema.

Recursividad
Algo recursivo o recurrente es algo que se llama a si mismo. Tiene que
ver con el principio de induccin.
La recursividad consume muchsima memoria, ya que mantiene las
variables del mtodo mientras que se ejecuta, y tambin mucho
tiempo. La recursividad es costosa pero es ms natural, se prefiere.
Por ejemplo, Java no puede implementar de forma recursiva el clculo
del factorial de un milln, pues cualquier computador se quedara sin
memoria, sin embargo, es necesario de implementar para poder
escribir y entender ciertos programas.

Recursividad vs. Iteracin


1- Ambas realizan una repeticin:
a) Solucin iterativa repite el cuerpo del bucle.
b) Solucin recursiva repite las llamadas al mtodo recursivo.
2- Ambas tienen una condicin de terminacin.
a) Solucin iterativa: termina cuando se incumple la condicin de
continuacin del bucle.
b) b)Solucin recursiva: se termina cuando una llamada alcanza el caso
base (induccin) desencadenando una secuencia de vuelta atrs.

Continuacin
3- Ambas se deben disear para converger a la solucin (principio de
convergencia, y que no se salten la condicin de terminacin).
a) Solucin iterativa: se llega a cumplir la condicin de terminacin
(esto se debe garantizar).
b) Solucin recursiva: se debe garantizar que se llegue al caso base.
Principio importante: Toda solucin recursiva puede encontrar una
solucin iterativa equivalente, mientras que lo contrario no siempre
es cierto.

Ejemplo Recursivo
long factorial(long);
int main(){
int num;
cout<<"Entre el numero: ";
cin>>num;
for(int i=0; i<=num; i++)
cout <<setw(2)<<i<<"!="
<<factorial(i)
<< endl;
return 0;}

Continuacin

long factorial (long num){


if (number<=1)
return 1;
else
return num*factorial(num-1);}
// Obsrvese como la funcin se
// Llama as misma

Iterativa
long factorial(long);
int main()
{
int num, fact;
cout<<"Entre un nmero ";
cin>>num;
resultado=factorial(num);
cout<<"El factorial es:"<<fact
<<endl;
return 0;}

long factorial(long num1)


{
int var=1;
int n=1;
while(n<=num1){
var=var*n;
n++;
}
return var;
}

Conclusin
la diferencia que podemos encontrar en la funcin recursiva y la
iterativa es que la recursiva tienes que hacer constantes llamadas en
las funciones que tienes en tu algoritmo o programa, mientras que en
la iterativa no son necesarias tantas llamadas para la solucin del
problema.

You might also like