Diferencia entre recursión e iteración

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 4 Mayo 2024
Anonim
Diferencia entre recursión e iteración - Tecnología
Diferencia entre recursión e iteración - Tecnología

Contenido


La recursión y la iteración ejecutan repetidamente el conjunto de instrucciones. La recursión es cuando una declaración en una función se llama a sí misma repetidamente. La iteración es cuando un bucle se ejecuta repetidamente hasta que la condición de control se vuelve falsa. La principal diferencia entre recursión e iteración es que es un recursividad es un proceso, siempre aplicado a una función. los iteración se aplica al conjunto de instrucciones que queremos ejecutar repetidamente.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónRecursividadIteración
BASICLa declaración en un cuerpo de función llama a la función misma.Permite que el conjunto de instrucciones se ejecute repetidamente.
FormatoEn la función recursiva, solo se especifica la condición de terminación (caso base).La iteración incluye la inicialización, la condición, la ejecución de la declaración dentro del bucle y la actualización (incrementos y decrementos) de la variable de control.
TerminaciónSe incluye una declaración condicional en el cuerpo de la función para forzar que la función regrese sin que se ejecute la llamada de recursión.La declaración de iteración se ejecuta repetidamente hasta que se alcanza una determinada condición.
CondiciónSi la función no converge a alguna condición llamada (caso base), conduce a una recursión infinita.Si la condición de control en la declaración de iteración nunca se vuelve falsa, conduce a una iteración infinita.
Repetición infinitaLa recursión infinita puede bloquear el sistema.El bucle infinito usa ciclos de CPU repetidamente.
AplicadoLa recursividad siempre se aplica a las funciones.La iteración se aplica a las declaraciones de iteración o "bucles".
ApilarLa pila se utiliza para almacenar el conjunto de nuevas variables y parámetros locales cada vez que se llama a la función.No usa pila.
Gastos generalesLa recursión posee la sobrecarga de llamadas a funciones repetidas.Sin sobrecarga de llamadas a funciones repetidas.
VelocidadLento en la ejecución.Rápido en la ejecución.
Tamaño del códigoLa recursión reduce el tamaño del código.La iteración hace que el código sea más largo.


Definición de recursión

C ++ permite que una función se llame a sí misma dentro de su código. Eso significa que la definición de la función posee una función llamada a sí misma. A veces también se llama "definición circular". El conjunto de variables locales y parámetros utilizados por la función se crean nuevamente cada vez que la función se llama a sí misma y se almacenan en la parte superior de la pila. Pero, cada vez que una función se llama a sí misma, no crea una nueva copia de esa función. La función recursiva no reduce significativamente el tamaño del código y ni siquiera mejora la utilización de la memoria, pero hace algo en comparación con la iteración.

Para terminar la recursividad, debe incluir una instrucción select en la definición de la función para forzar que la función regrese sin darse una llamada recursiva. La ausencia de la instrucción select en la definición de una función recursiva permitirá que la función en recursión infinita una vez llamada.


Comprendamos la recursividad con una función que devolverá el factorial del número.

int factorial (int num) {int respuesta; if (num == 1) {return 1; } else {respuesta = factorial (num-1) * num; // llamadas recursivas} return (respuesta); }

En el código anterior, la instrucción en la parte else muestra la recursividad, ya que la instrucción llama a la función factorial () en la que reside.

Definición de iteración

La iteración es un proceso de ejecución del conjunto de instrucciones repetidamente hasta que la condición en la declaración de iteración se vuelve falsa. La declaración de iteración incluye la inicialización, comparación, ejecución de las declaraciones dentro de la declaración de iteración y finalmente la actualización de la variable de control. Después de actualizar la variable de control, se compara de nuevo y el proceso se repite, hasta que la condición en la declaración de iteración resulta ser falsa. Las declaraciones de iteración son "for" loop, "while" loop, "do-while" loop.

La declaración de iteración no usa una pila para almacenar las variables. Por lo tanto, la ejecución de la declaración de iteración es más rápida en comparación con la función recursiva. Incluso la función de iteración no tiene la sobrecarga de llamadas a funciones repetidas que también hacen que su ejecución sea más rápida que la función recursiva. La iteración finaliza cuando la condición de control se vuelve falsa. La ausencia de condición de control en la declaración de iteración puede resultar en un bucle infinito o puede causar un error de compilación.

Comprendamos la iteración con respecto al ejemplo anterior.

int factorial (int num) {int respuesta = 1; // necesita inicialización porque puede contener un valor basura antes de su inicialización para (int t = 1; t> num; t ++) // iteración {respuesta = respuesta * (t); volver (respuesta); }}

En el código anterior, la función devuelve el factorial del número usando la instrucción de iteración.

  1. La recursión es cuando un método en un programa se llama a sí mismo repetidamente, mientras que la iteración es cuando un conjunto de instrucciones en un programa se ejecuta repetidamente.
  2. Un método recursivo contiene un conjunto de instrucciones, una instrucción que se llama a sí misma y una condición de terminación, mientras que las instrucciones de iteración contienen inicialización, incremento, condición, conjunto de instrucciones dentro de un bucle y una variable de control.
  3. Una declaración condicional decide la terminación de la recursividad y el valor de la variable de control decide la terminación de la declaración de iteración.
  4. Si el método no conduce a la condición de terminación, entra en una recursión infinita. Por otro lado, si la variable de control nunca conduce al valor de terminación, la declaración de iteración itera infinitamente.
  5. La recursión infinita puede provocar un bloqueo del sistema, mientras que la iteración infinita consume ciclos de CPU.
  6. La recursividad siempre se aplica al método, mientras que la iteración se aplica al conjunto de instrucciones.
  7. Las variables creadas durante la recursión se almacenan en la pila, mientras que la iteración no requiere una pila.
  8. La recursión provoca la sobrecarga de llamadas de funciones repetidas, mientras que la iteración no tiene una función que llama sobrecarga.
  9. Debido a la función de llamada, la ejecución de la recursión es más lenta mientras que la ejecución de la iteración es más rápida.
  10. La recursión reduce el tamaño del código, mientras que las iteraciones hacen que el código sea más largo.

Conclusión:

La función recursiva es fácil de escribir, pero no funcionan bien en comparación con la iteración, mientras que la iteración es difícil de escribir pero su rendimiento es bueno en comparación con la recursividad.