Recursiunea și iterația pot fi folosite pentru a rezolva problemele de programare. Abordarea pentru rezolvarea problemei folosind recursul sau repetarea depinde de modul de rezolvare a problemei. diferența cheie între recursiune și repetare este asta recursiunea este un mecanism de a apela o funcție în cadrul aceleiași funcții, în timp ce iterația este de a executa în mod repetat un set de instrucțiuni până când condiția dată este adevărată. Recursia și iterația sunt principalele tehnici de dezvoltare a algoritmilor și a aplicațiilor software de construcție.
1. Prezentare generală și diferență cheie
2. Ce este Recurgerea
3. Ce este iterarea
4. Asemănări între recurs și iterare
5. Comparație comparație comparativă - Recursion vs. iterare în formă tabulară
6. rezumat
Când o funcție se numește în cadrul funcției, este cunoscută sub numele de Recursion. Există două tipuri de recurențe. Acestea sunt recursivitate finită și recursivitate infinită. Recurență finită are o conditie de terminare. Recurgerea infinită nu are o conditie de terminare.
Recursia poate fi explicată folosind programul pentru a calcula factoriali.
n! = n * (n-1)!, dacă n> 0
n! = 1, dacă n = 0;
Consultați codul de mai jos pentru a calcula factorial de 3 (3! = 3 * 2 * 1).
intmain ()
valoarea int = factorial (3);
printf ("Factorial este% d \ n", valoare);
retur 0;
intfactorial (intn)
dacă (n == 0)
retur 1;
altfel
returnează n * factorial (n-1);
Atunci când apelați factorial (3), această funcție va numi factorial (2). Atunci când apelați factorial (2), această funcție va apela factorial (1). Atunci factorial (1) va apela factorial (0). factorial (0) va reveni 1. În programul de mai sus, condiția n == 0 din "if block" este starea de bază. Conform Similar, funcția factorială este chemată din nou și din nou.
Funcțiile recursive sunt legate de stivă. În C, programul principal poate avea multe funcții. Astfel, main () este funcția de apelare, iar funcția numită de programul principal este funcția apelată. Când se numește funcția, comanda este dată funcției chemate. După finalizarea executării funcției, comanda se întoarce la principal. Apoi, programul principal continuă. Deci, creează o înregistrare de activare sau un cadru de stivă pentru a continua execuția.
Figura 01: Recursiune
În programul de mai sus, atunci când suntem factorial (3) de la principal, acesta creează o înregistrare de activare în stiva apelurilor. Apoi, cadrul de stivă factorial (2) este creat pe partea superioară a stivei și așa mai departe. Înregistrarea de activare păstrează informații despre variabilele locale etc. De fiecare dată când este apelată funcția, se creează un nou set de variabile locale în partea de sus a stivei. Aceste cadre pot reduce viteza. De asemenea, în recursiune, o funcție se numește ea însăși. Complexitatea timpului pentru o funcție recursivă se găsește de câte ori este apelată funcția. Complexitatea timpului pentru apelul unei funcții este O (1). Pentru numărul n de apeluri recursive, complexitatea de timp este O (n).
Iterația este un bloc de instrucțiuni care se repetă din nou și din nou până când condiția dată este adevărată. Iterația poate fi obținută folosind "pentru buclă", "buclă" sau "în timp ce". "Pentru buclă" sintaxa este după cum urmează.
pentru (inițializare, condiție, modificare)
// declarații;
Figura 02: "pentru schema fluxului de buclă"
Pasul de inițiere se execută mai întâi. Acest pas este de a declara și de a iniția variabile de control al buclă. Dacă condiția este adevărată, se execută instrucțiunile din interiorul acoladei. Aceste declarații se execută până când condiția este adevărată. Dacă condiția este falsă, comanda trece la următoarea instrucțiune după "for loop". După executarea instrucțiunilor din interiorul bucla, comanda merge pentru modificarea secțiunii. Este pentru a actualiza variabila control buclă. Apoi, condiția este verificată din nou. Dacă condiția este adevărată, vor fi executate instrucțiunile din acoladele curbate. În acest fel, iterația "for loop" se repetă.
În "buclă în timp", instrucțiunile din buclă se execută până când condiția este adevărată.
în timp ce (condiție)
// declaraţii
În buclă "Do-while", starea este verificată la sfârșitul buclei. Deci, buclă execută cel puțin o dată.
do
// declaraţii
în timp ce (condiție)
Programul pentru a găsi factorial de 3 (3!) Folosind iterația ("pentru buclă") este după cum urmează.
int main ()
intn = 3, factorial = 1;
Inti;
pentru (i = 1; i<=n ; i++)
factorial = factorial * i;
printf ("Factorial este% d \ n", factorial);
retur 0;
Recurgerea vs. iterarea | |
Recurgerea este o metodă de a apela o funcție în cadrul aceleiași funcții. | Iterația este un bloc de instrucțiuni care se repetă până când condiția dată este adevărată. |
Spațiu complex | |
Complexitatea spațială a programelor recursive este mai mare decât iterațiile. | Complexitatea spațiului este mai mică în iterații. |
Viteză | |
Exercitarea executării este lentă. | În mod normal, repetarea este mai rapidă decât recursiunea. |
Condiție | |
Dacă nu există o condiție de terminare, poate exista o recurență infinită. | Dacă condiția nu devine niciodată falsă, va fi o iterație infinită. |
Grămadă | |
În recursiune, stiva este folosită pentru stocarea variabilelor locale atunci când este apelată funcția. | Într-o iterație, stiva nu este utilizată. |
Cod de citire | |
Un program recursiv este mai ușor de citit. | Programul iterativ este mai greu de citit decât un program recursiv. |
Acest articol a discutat diferența dintre recursiune și repetare. Ambele pot fi folosite pentru a rezolva problemele de programare. Diferența dintre recursiune și iterație este aceea că recursiunea este un mecanism pentru a apela o funcție în cadrul aceleiași funcții și o iterație pentru a executa în mod repetat un set de instrucțiuni până când condiția dată este adevărată. Dacă o problemă poate fi rezolvată în formă recursivă, ea poate fi rezolvată și folosind iterații.
Puteți descărca versiunea PDF a acestui articol și o puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici Diferența dintre recurs și iterare
1. Puncte, Tutoriale. "Structuri de date și algoritmi de bază de recurs.", Tutoriale punct, 15 august 2017. Disponibil aici
2.nareshtechnologies. Recurgerea la funcțiile C C Limbajul Tutorial "YouTube, YouTube, 12 septembrie 2016. Disponibil aici
3.yusuf shakeel. Algoritmul de recurs Factorial - Ghid pas cu pas "YouTube, YouTube, 14 octombrie 2013. Disponibil aici
1.'CPT-Recursion-Factorial-Code'By Pluke - Activitate proprie, (Public Domain) prin Commons Wikimedia
2. "Diagrama pentru buclă" Nu este prevăzut nici un autor care să poată fi citit de mașină - Asumarea propriei activități. (CC BY-SA 2.5) prin intermediul Commons Wikimedia