Diferència entre Recursió i Iteració

Autora: Laura McKinney
Data De La Creació: 1 Abril 2021
Data D’Actualització: 4 Ser Possible 2024
Anonim
Diferència entre Recursió i Iteració - Tecnologia
Diferència entre Recursió i Iteració - Tecnologia

Content


Ambdues de recurs i iteració executen repetidament el conjunt d'instruccions. La recurrència és quan una declaració d’una funció es truca repetidament. La iteració és quan s’executa repetidament un bucle fins que la condició de control es converteix en falsa. La diferència principal entre la recursió i la iteració és que és a recursió és un procés, sempre aplicat a una funció. El iteració s’aplica al conjunt d’instruccions que volem executar repetidament.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióRecursióIteració
BàsicLa sentència en un cos de funció anomena la pròpia funció.Permet executar repetidament el conjunt d’instruccions.
FormatA la funció recursiva, només s’especifica la condició de terminació (cas base).La iteració inclou inicialització, condició, execució de la sentència dins del bucle i actualitzar (increments i decrements) la variable de control.
TerminacióUna instrucció condicional s'inclou al cos de la funció per forçar la funció a tornar sense que s'executi una trucada de recurs.La sentència d’iteració s’executa de manera repetida fins que s’arriba a una determinada condició.
EstatSi la funció no convergeix a alguna condició anomenada (cas base), condueix a una recursió infinita.Si la condició de control de la instrucció de iteració mai esdevé falsa, condueix a una iteració infinita.
Repetició infinitaLa recursió infinita pot bloquejar el sistema.El bucle infinit utilitza repetidament cicles de CPU.
AplicatLa recurrència s’aplica sempre a les funcions.La iteració s'aplica a declaracions d'iteració o "bucles".
PilaLa pila s’utilitza per emmagatzemar el conjunt de noves variables i paràmetres locals cada vegada que s’anomena funció.No utilitza pila.
Despeses generalsLa recurrència té la despesa general de les trucades de funcions repetides.No hi ha cap despesa de trucada de funcions repetida.
VelocitatLent en l’execució.Execució ràpida.
Mida del codiLa recurrència redueix la mida del codi.La iteració fa més llarg el codi.


Definició de Recursió

C ++ permet a una funció trucar-se dins del seu codi. Això significa que la definició de la funció té una trucada de funció a si mateixa. De vegades també s’anomena “definició circular“. El conjunt de variables i paràmetres locals utilitzats per la funció es creen de nou cada vegada que la funció es truca i es guarden a la part superior de la pila. Però, cada cop que una funció es titula, no crea una còpia nova d'aquesta funció. La funció recursiva no redueix significativament la mida del codi i ni tan sols millora l’ús de la memòria, però en fa algunes si es compara amb la iteració.

Per finalitzar la recursió, heu d’incloure una instrucció selecta en la definició de la funció per forçar la funció a retornar sense fer una trucada recursiva a si mateixa. L'absència de la sentència selecta en la definició d'una funció recursiva permetrà que la funció en recursió infinita una vegada cridada.


Entenguem la recursivitat amb una funció que retorna el factorial del nombre.

int factorial (int num) {int resposta; if (num == 1) {retornar 1; } else {resposta = factorial (num-1) * num; // trucada recursiva} retorn (resposta); }

Al codi anterior, la sentència en una altra part mostra la recursió, ja que la instrucció anomena la funció factorial () en la qual resideix.

Definició d'Iteració

La iteració és un procés d’executar repetidament el conjunt d’instruccions fins que la condició en la declaració d’iteració es converteixi en falsa. La declaració d'iteració inclou la inicialització, la comparació, l'execució de les sentències dins de la instrucció de iteració i finalment l'actualització de la variable de control. Una vegada actualitzada la variable de control, es torna a comparar i el procés es repeteix fins que la condició de la declaració d'iteració resulta falsa. Les declaracions d'iteració són llaç "per", llaç "mentre", "temps mentre"

La declaració d'iteració no utilitza una pila per emmagatzemar les variables. Per tant, l'execució de la instrucció de iteració és més ràpida en comparació amb la funció recursiva. Fins i tot la funció d'iteració no té la sobrecàrrega de les trucades de funcions repetides, que també fan que la seva execució sigui més ràpida que la funció recursiva. La iteració s’acaba quan la condició de control es converteix en falsa. L'absència de condició de control en la declaració d'iteració pot donar lloc a un bucle infinit o pot causar un error de compilació.

Entenem la iteració respecte a l’exemple anterior.

int factorial (int num) {int resposta = 1; // necessita la inicialització perquè pot contenir un valor d'escombraries abans de la seva inicialització per a (int t = 1; t> num; t ++) // iteració {resposta = resposta * (t); tornar (resposta); }}

Al codi anterior, la funció retorna el factorial del nombre mitjançant la instrucció de iteració.

  1. La recursió és quan un mètode d’un programa es diu repetidament mentre que, la iteració és quan s’executa de forma repetida un conjunt d’instruccions d’un programa.
  2. Un mètode recursiu conté un conjunt d’instruccions, una declaració que es diu i una condició de terminació, mentre que les declaracions d’iteració contenen inicialització, increment, condició, conjunt d’instruccions dins d’un bucle i una variable de control.
  3. Una declaració condicional decideix la finalització de la recursió i el valor de la variable de control decideix la finalització de la instrucció de iteració.
  4. Si el mètode no condueix a la condició de terminació, entra a la recursió infinita. D'altra banda, si la variable de control mai condueix al valor de la terminació, la sentència d'iteració itera infinitament.
  5. La recursió infinita pot causar un bloqueig del sistema mentre que, la iteració infinita consumeix cicles de CPU.
  6. La recurs és sempre aplicada al mètode mentre que, la iteració s'aplica al conjunt d'instruccions.
  7. Les variables creades durant la recursió s’emmagatzemen a la pila mentre que, la iteració no requereix una pila.
  8. La recurrència provoca la despesa general de les trucades de funcions repetides, mentre que, la iteració no té una funció que truca a sobre.
  9. A causa de la funció de trucar, l'execució de despeses generals és més lenta mentre que, l'execució de la iteració és més ràpida.
  10. La recursiva redueix la mida del codi mentre que, les iteracions fan més llarg el codi.

Conclusió:

La funció recursiva és fàcil d’escriure, però no funcionen bé en comparació amb la iteració, mentre que, la iteració és difícil d’escriure, però el seu rendiment és bo en comparació amb la recursivitat.