Diferencia entre la recursión y la iteración

Diferencia entre la recursión y la iteración

Diferencia clave: recursión Vs iteración
 

La recursión y la iteración se pueden usar para resolver problemas de programación. El enfoque para resolver el problema usando la recursión o la iteración depende de la forma de resolver el problema. El diferencia clave entre la recursión y la iteración es que La recursión es un mecanismo para llamar a una función dentro de la misma función, mientras que la iteración es ejecutar un conjunto de instrucciones repetidamente hasta que la condición dada sea verdadera. La recursión y la iteración son las principales técnicas para desarrollar algoritmos y construir aplicaciones de software.

CONTENIDO

1. Descripción general y diferencia de claves
2. Que es la recursión
3. Que es la iteración
4. Similitudes entre la recursión y la iteración
5. Comparación lado a lado: recursión vs iteración en forma tabular
6. Resumen

Que es la recursión?

Cuando una función se llama a sí misma dentro de la función, se conoce como recursión. Hay dos tipos de recursión. Son recursión finita y recursión infinita. Recursión finita tiene una condición de terminación. Recursión infinita no tiene una condición de terminación.

La recursión puede explicarse utilizando el programa para calcular los factoriales.

norte! = N * (N-1)!, Si n> 0

norte! = 1, si n = 0;

Consulte el código a continuación para calcular factorial de 3 (3!= 3*2*1).

intmain ()

int value = factorial (3);

printf ("factorial es %d \ n", valor);

regresar 0;

intactorial (intn)

if (n == 0)

regresar 1;

demás

regreso n* factorial (n-1);

Al llamar a Factorial (3), esa función llamará a Factorial (2). Al llamar a Factorial (2), esa función llamará a Factorial (1). Entonces Factorial (1) llamará factorial (0). Factorial (0) regresará 1. En el programa anterior, la condición n == 0 en el "bloque if" es la condición base. Según lo mismo, la función factorial se llama una y otra vez.

Las funciones recursivas están relacionadas con la pila. En C, el programa principal puede tener muchas funciones. Entonces, Main () es la función de llamada, y la función que llama el programa principal es la función llamada. Cuando se llama a la función, el control se da a la función llamada. Después de completar la ejecución de la función, el control se devuelve a. Entonces el programa principal continúa. Entonces, crea un registro de activación o un marco de pila para continuar la ejecución.

Figura 01: Recursión

En el programa anterior, al llamar a Factorial (3) desde Main, crea un registro de activación en la pila de llamadas. Luego, el marco de la pila factorial (2) se crea en la parte superior de la pila y así sucesivamente. El registro de activación mantiene información sobre variables locales, etc. Cada vez que se llama a la función, se crea un nuevo conjunto de variables locales en la parte superior de la pila. Estos marcos de pila pueden ralentizar la velocidad. Del mismo modo en recursión, una función se llama a sí misma. La complejidad del tiempo para una función recursiva es encontrada por el número de veces, la función se llama.  La complejidad del tiempo para una llamada de función es o (1). Para n número de llamadas recursivas, la complejidad del tiempo es O (n).

Que es la iteración?

La iteración es un bloque de instrucciones que se repite una y otra vez hasta que la condición dada sea verdadera. La iteración se puede lograr usando "para bucle", "bucle de hacer when" o "bucle while". La sintaxis "para bucle" es la siguiente.

para (inicialización; condición; modificar)

// declaraciones;

Figura 02: "Para diagrama de flujo de bucle"

El paso de inicialización se ejecuta primero. Este paso es declarar e inicializar las variables de control de bucle. Si la condición es verdadera, las declaraciones dentro de los aparatos ortopédicos rizados se ejecutan. Esas declaraciones se ejecutan hasta que la condición sea verdadera. Si la condición es falsa, el control va a la siguiente declaración después del "For Loop". Después de ejecutar las declaraciones dentro del bucle, el control va a modificar la sección. Es actualizar la variable de control de bucle. Entonces la condición se verifica de nuevo. Si la condición es verdadera, las declaraciones dentro de los aparatos rizados se ejecutarán. De esta manera, la itera el "For Loop".

En "While Loop", Las declaraciones dentro del bucle se ejecutan hasta que la condición sea verdadera.

while (condición)

//declaraciones

En el bucle "do-while", La condición se verifica al final del bucle. Entonces, el bucle se ejecuta al menos una vez.

hacer

//declaraciones

while (condición)

Programa para encontrar el factor de 3 (3!) usar iteración ("para bucle") es el siguiente.

int main ()

intn = 3, factorial = 1;

inti;

para (i = 1; i<=n ; i++)

factorial = factorial *i;

printf ("factorial es %d \ n", factorial);

regresar 0;

¿Cuáles son las similitudes entre la recursión y la iteración??

  • Ambas son técnicas para resolver un problema.
  • La tarea se puede resolver en recursión o iteración.

¿Cuál es la diferencia entre la recursión y la iteración??

Recursión vs iteración

La recursión es un método para llamar a una función dentro de la misma función. La iteración es un bloque de instrucciones que se repite hasta que la condición dada sea verdadera.
Complejidad espacial
La complejidad espacial de los programas recursivos es mayor que las iteraciones. La complejidad del espacio es menor en iteraciones.
Velocidad
La ejecución de la recursión es lenta. Normalmente, la iteración es más rápida que la recursión.
Condición
Si no hay condición de terminación, puede haber una recursión infinita. Si la condición nunca se vuelve falsa, será una iteración infinita.
Pila
En recursión, la pila se usa para almacenar variables locales cuando se llama la función. En una iteración, la pila no se usa.
Lecabilidad del código
Un programa recursivo es más legible. El programa iterativo es más difícil de leer que un programa recursivo.

Resumen -Recursión Vs iteración

Este artículo discutió la diferencia entre la recursión y la iteración. Ambos se pueden usar para resolver problemas de programación. La diferencia entre la recursión y la iteración es que la recursión es un mecanismo para llamar a una función dentro de la misma función e iteración para ejecutar un conjunto de instrucciones repetidamente hasta que la condición dada sea verdadera. Si un problema se puede resolver en forma recursiva, también se puede resolver utilizando iteraciones.

Descargue la versión PDF de Recursion vs iteration

Puede descargar la versión PDF de este artículo y usarla para fines fuera de línea según la nota de cita. Descargue la versión pdf aquí diferencia entre recursión e iteración

Referencia:

1.Punto, tutoriales. “Estructuras de datos y concuros de recursión de algoritmos.", Tutorials Point, 15 de agosto. 2017. Disponible aquí 
2.nareshtechnologies. "Recuración en funciones C | C Tutorial de idiomas ”YouTube, YouTube, 12 de septiembre. 2016.  Disponible aquí  
3.Yusuf Shakeel. "Algoritmo de recursión | Factorial - guía paso a paso ”YouTube, YouTube, 14 de octubre. 2013.  Disponible aquí  

Imagen de cortesía:

1.'CPT-Recursion-Factorial-Code'by PLUKE-Trabajo propio, (dominio público) a través de Commons Wikimedia 
2.'For-loop-diagram'by No se proporcionó un autor legible para la máquina-Trabajo propio asumido. (CC BY-SA 2.5) Vía Commons Wikimedia