Está en la página 1de 9

Recursividad vs Iteración

Carrera de Ingeniería Informática


Aspectos que hay que considerar al decidir cómo implementar la
solución 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 solución (en ocasiones, la solución iterativa es
muy difícil de encontrar).
• La concisión, legibilidad y elegancia del código resultante de la
solución recursiva del problema.
Recursividad
• Algo recursivo o recurrente es algo que se llama a si mismo. Tiene que
ver con el principio de inducción.
• La recursividad consume muchísima memoria, ya que mantiene las
variables del método mientras que se ejecuta, y también mucho
tiempo. La recursividad es costosa pero es más natural, se prefiere.
Por ejemplo, Java no puede implementar de forma recursiva el cálculo
del factorial de un millón, pues cualquier computador se quedaría sin
memoria, sin embargo, es necesario de implementar para poder
escribir y entender ciertos programas.
Recursividad vs. Iteración
1- Ambas realizan una repetición:
a) Solución iterativa repite el cuerpo del bucle.
b) Solución recursiva repite las llamadas al método recursivo.
2- Ambas tienen una condición de terminación.
a) Solución iterativa: termina cuando se incumple la condición de
continuación del bucle.
b) b)Solución recursiva: se termina cuando una llamada alcanza el caso
base (inducción) desencadenando una secuencia de vuelta atrás.
Continuación
3- Ambas se deben diseñar para converger a la solución (principio de
convergencia, y que no se salten la condición de terminación).
a) Solución iterativa: se llega a cumplir la condición de terminación
(esto se debe garantizar).
b) Solución recursiva: se debe garantizar que se llegue al caso base.

• Principio importante: Toda solución recursiva puede encontrar una


solución 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;}
Continuación

long factorial (long num){


if (number<=1)
return 1;
else
return num*factorial(num-1);}
// Obsérvese como la función se
// Llama así misma
Iterativa
long factorial(long); long factorial(long num1)
{
int var=1;
int main() int n=1;
{ while(n<=num1){
int num, fact; var=var*n;
cout<<"Entre un número "; n++;
cin>>num; }
resultado=factorial(num); return var;
cout<<"El factorial es:"<<fact }
<<endl;
return 0;}
Conclusión
• la diferencia que podemos encontrar en la función 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 solución del
problema.

También podría gustarte