Diferența dintre recurență și iterație

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 1 Mai 2024
Anonim
Instructiunile While și Repeat Clasa 9
Video: Instructiunile While și Repeat Clasa 9

Conţinut


Recursiunea și iterația ambelor execută în mod repetat setul de instrucțiuni. Recursul este atunci când o declarație dintr-o funcție se numește în mod repetat. Iterația este atunci când o buclă se execută în mod repetat până când condiția de control devine falsă. Diferența principală între recurs și iterație este că este a recursivitate este un proces, întotdeauna aplicat unei funcții. repetare este aplicat setului de instrucțiuni pe care dorim să le executăm în mod repetat.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieRecursivitateRepetare
De bazăInstrucțiunea dintr-un corp de funcție numește funcția în sine.Permite executarea repetată a setului de instrucțiuni.
FormatÎn funcția recursivă, este specificată doar condiția de reziliere (caz de bază).Iterarea include inițializarea, condiția, execuția instrucțiunii în buclă și actualizarea (creșteri și decremente) a variabilei de control.
terminareO instrucțiune condiționată este inclusă în corpul funcției pentru a forța funcția să revină fără ca apelul de recurs să fie executat.Declarația de iterație este executată în mod repetat până la atingerea unei anumite condiții.
CondițieDacă funcția nu converg la o anumită condiție numită (caz de bază), aceasta conduce la o recursiune infinită.Dacă starea de control din declarația de iterație nu devine niciodată falsă, aceasta duce la o iterație infinită.
Repetare infinităRecursivitatea infinită poate bloca sistemul.Bucla infinită folosește în mod repetat ciclurile procesorului.
AplicatRecursiunea este întotdeauna aplicată funcțiilor.Iterarea se aplică declarațiilor de iterare sau „bucle”.
GrămadăStiva este folosită pentru a stoca setul de noi variabile și parametri locali de fiecare dată când se apelează funcția.Nu folosește stiva.
deasupraRecursiunea are capătul general al apelurilor funcționale repetate.Nu există cheltuieli generale ale apelului funcțional repetat.
VitezăÎncetinire în execuție.Rapid în execuție.
Dimensiunea coduluiRecursiunea reduce dimensiunea codului.Iterarea face ca codul să fie mai lung.


Definiția Recursion

C ++ permite unei funcții să se numească în cadrul codului său. Aceasta înseamnă că definiția funcției are un apel funcțional la sine. Uneori se mai numește „definiție circulară„. Setul de variabile și parametri locali utilizați de funcție sunt nou creați de fiecare dată când funcția se apelează singură și sunt stocate în partea de sus a stivei. Dar, de fiecare dată când o funcție se numește, nu creează o nouă copie a acestei funcții. Funcția recursivă nu reduce semnificativ dimensiunea codului și nici mărește îmbunătățirea utilizării memoriei, dar o face în comparație cu iterația.

Pentru a încheia recursiunea, trebuie să includeți o instrucțiune selectată în definiția funcției, pentru a forța funcția să revină fără a efectua un apel recursiv. Absența instrucțiunii select în definiția unei funcții recursive va permite funcției în recursivitate infinită o dată apelată.


Să înțelegem recursiunea cu o funcție care va întoarce factorialul numărului.

int factorial (int num) {int răspuns; if (num == 1) {return 1; } else {raspuns = factorial (num-1) * num; // apel recursiv} retur (raspuns); }

În codul de mai sus, instrucțiunea din altă parte arată recursivitatea, deoarece instrucțiunea numește funcția factorial () în care se află.

Definiția Iteration

Iterarea este un proces de executare a setului de instrucțiuni în mod repetat, până când condiția din declarația de iterație devine falsă. Instrucțiunea de iterație include inițializarea, compararea, execuția declarațiilor din interiorul declarației de iterație și, în final, actualizarea variabilei de control. După ce variabila de control este actualizată, este comparată din nou și procesul se repetă, până când condiția din declarația de iterație se dovedește a fi falsă. Instrucțiunile de iterație sunt bucla „pentru”, bucla „în timp”, „timp în timp”.

Declarația de iterație nu utilizează o stivă pentru a stoca variabilele. Prin urmare, execuția declarației de iterație este mai rapidă în comparație cu funcția recursivă. Nici funcția de iterație nu are capătul general al apelurilor funcției repetate, ceea ce face, de asemenea, execuția ei mai rapidă decât funcția recursivă. Iterația este încheiată atunci când starea de control devine falsă. Lipsa condiției de control în declarația de iterație poate duce la o buclă infinită sau poate provoca o eroare de compilare.

Să înțelegem iterația cu privire la exemplul de mai sus.

int factorial (int num) {int răspuns = 1; // are nevoie de inițializare, deoarece poate conține o valoare a gunoiului înainte de inițializarea sa pentru (int t = 1; t> num; t ++) // iterație {răspuns = răspuns * (t); retur (raspuns); }}

În codul de mai sus, funcția returnează factorialul numărului folosind instrucțiunea de iterare.

  1. Recursul este atunci când o metodă dintr-un program se numește în mod repetat, în timp ce iterația este atunci când un set de instrucțiuni dintr-un program sunt executate în mod repetat.
  2. O metodă recursivă conține un set de instrucțiuni, apel de apel în sine și o condiție de încheiere, în timp ce declarațiile de iterare conțin inițializare, incrementare, condiție, set de instrucțiuni în cadrul unei bucle și o variabilă de control.
  3. O declarație condiționată decide încetarea recursului și valoarea variabilei de control decide încheierea declarației de iterație.
  4. Dacă metoda nu duce la condiția de încheiere, aceasta intră la o recursiune infinită. Pe de altă parte, dacă variabila de control nu duce niciodată la valoarea de terminare, instrucțiunea de iterație se iterează la infinit.
  5. Recursul infinit poate duce la blocarea sistemului, în timp ce iterația infinită consumă cicluri ale procesorului.
  6. Recursiunea este întotdeauna aplicată metodei, în timp ce iterația este aplicată setului de instrucțiuni.
  7. Variabilele create în timpul recursului sunt stocate pe stivă, în timp ce iterația nu necesită o stivă.
  8. Recursiunea provoacă generarea de apeluri funcționale repetate, în timp ce iterația nu are o funcție care apelează deasupra capului.
  9. Datorită funcției, apelul executiei aeriene a recursului este mai lent, în timp ce executarea iterației este mai rapidă.
  10. Recursiunea reduce dimensiunea codului, în timp ce iterațiile fac un cod mai lung.

Concluzie:

Funcția recursivă este ușor de scris, dar nu funcționează bine în comparație cu iterația, în timp ce iterația este greu de scris, dar performanța lor este bună în comparație cu recursivitatea.