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.
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
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).
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;
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. |
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.
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
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í
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