Rekursijos Ir Iteracijos Skirtumas

Turinys:

Rekursijos Ir Iteracijos Skirtumas
Rekursijos Ir Iteracijos Skirtumas

Video: Rekursijos Ir Iteracijos Skirtumas

Video: Rekursijos Ir Iteracijos Skirtumas
Video: Antras pagal didumą skaičius sąraše, rekursija: vyriausias gyminėje, max skaičius - 25 grupė (31) 2024, Lapkritis
Anonim

Pagrindinis skirtumas - rekursija ir iteracija

Rekursija ir iteracija gali būti naudojami programavimo problemoms spręsti. Požiūris į problemos sprendimą naudojant rekursiją ar iteraciją priklauso nuo problemos sprendimo būdo. Esminis skirtumas tarp rekursijos ir iteracijos yra tas, kad rekursija yra mechanizmas, skirtas iškviesti tą pačią funkciją, tuo tarpu iteracija - komandų rinkinio vykdymas pakartotinai, kol duota sąlyga yra teisinga. Rekursija ir iteracija yra pagrindiniai algoritmų kūrimo ir programinės įrangos kūrimo būdai.

TURINYS

1. Apžvalga ir pagrindinis skirtumas

2. Kas yra rekursija

3. Kas yra iteracija

4. Rekursijos ir iteracijos panašumai

5. Šalia palyginimas - rekursija ir iteracija lentelių pavidalu

6. Santrauka

Kas yra rekursija?

Kai funkcija vadinasi funkcija, ji vadinama rekursija. Yra dviejų tipų rekursija. Jie yra baigtinis rekursija ir begalinis rekursija. Galutinis rekursija turi baigtinę sąlygą. Begalinis rekursija neturi pabaigos sąlygos.

Rekursija gali būti paaiškinta naudojant programą apskaičiuojant faktorialus.

n! = n * (n-1) !, jei n> 0

n! = 1, jei n = 0;

Nurodykite žemiau esantį kodą, kad apskaičiuotumėte faktorių iš 3 (3! = 3 * 2 * 1).

vidinis () {

int reikšmė = faktorialas (3);

printf („Factorial yra% d / n“, reikšmė);

grąžinti 0;

}

intactorial (intn) {

jei (n == 0) {

grąžinti 1;

}

Kitas {

grąžinti n * faktorialą (n-1);

}

}

Skambindama faktoriumi (3), ta funkcija iškvies faktorialą (2). Skambindama faktoriumi (2), ta funkcija iškvies faktorių (1). Tada faktorius (1) vadins faktoriumi (0). faktorius (0) grąžins 1. Pirmiau pateiktoje programoje n == 0 sąlyga „jei bloke“yra pagrindinė sąlyga. Anot Panašiai, faktorinė funkcija yra kviečiama vėl ir vėl.

Rekursinės funkcijos yra susijusios su kaminu. C programoje pagrindinė programa gali turėti daug funkcijų. Taigi, main () yra iškvietimo funkcija, o funkcija, kurią iškviečia pagrindinė programa, yra vadinama funkcija. Kai iškviečiama funkcija, valdymas suteikiamas iškviečiamai funkcijai. Užbaigus funkcijos vykdymą, valdiklis grąžinamas į pagrindinį. Tada pagrindinė programa tęsiama. Taigi, jis sukuria aktyvinimo įrašą arba rietuvės rėmą, kad tęstų vykdymą.

Rekursijos ir iteracijos skirtumas
Rekursijos ir iteracijos skirtumas

01 pav. Rekursija

Pirmiau minėtoje programoje, iškviesdamas faktorialą (3) iš pagrindinio, jis sukuria aktyvavimo įrašą skambučių kamiene. Tada ant kamino viršaus sukuriamas faktoriaus (2) kamino rėmas ir pan. Aktyvinimo įraše saugoma informacija apie vietinius kintamuosius ir kt. Kiekvieną kartą, kai iškviečiama funkcija, kamino viršuje sukuriamas naujas vietinių kintamųjų rinkinys. Šie kamino rėmai gali sulėtinti greitį. Panašiai ir rekursijoje, funkcija vadina save. Rekursinės funkcijos laiko sudėtingumas nustatomas pagal kartų skaičių, iškviečiama funkcija. Vieno funkcijos iškvietimo laiko sudėtingumas yra O (1). N rekursinių skambučių skaičiaus laiko sudėtingumas yra O (n).

Kas yra iteracija?

Kartojimas yra nurodymų blokas, kuris kartojasi vėl ir vėl, kol duota sąlyga yra teisinga. Kartojimą galima pasiekti naudojant „for loop“, „do-while loop“arba „while loop“. „Už kilpą“sintaksė yra tokia.

for (inicijavimas; sąlyga; modifikuoti) {

// teiginiai;

}

Pagrindinis rekursijos ir iteracijos skirtumas
Pagrindinis rekursijos ir iteracijos skirtumas

02 paveikslas: „kilpos srauto schemai“

Pirmiausia atliekamas inicijavimo žingsnis. Šis žingsnis yra deklaruoti ir inicializuoti kilpos valdymo kintamuosius. Jei sąlyga teisinga, vykdomi teiginiai garbanotųjų petnešų viduje. Šie teiginiai vykdomi, kol sąlyga yra teisinga. Jei sąlyga yra klaidinga, valdiklis pereina prie kito sakinio po „for loop“. Vykdžius sakinius ciklo viduje, valdiklis pereina prie skyriaus modifikavimo. Tai yra atnaujinti ciklo valdymo kintamąjį. Tada būklė dar kartą patikrinama. Jei sąlyga yra teisinga, bus įvykdyti teiginiai garbanotųjų petnešų viduje. Tokiu būdu kartojasi „už kilpą“.

Dalyje „while loop“sakiniai ciklo viduje vykdomi tol, kol sąlyga bus teisinga.

while (sąlyga) {

// teiginiai

}

„Do-while“cikle būklė tikrinama ciklo pabaigoje. Taigi, ciklas vykdomas bent kartą.

padaryti {

// teiginiai

} while (sąlyga)

Programa rasti faktorių iš 3 (3!) Naudojant iteraciją („už kilpą“) yra tokia.

int main () {

intn = 3, faktorialas = 1;

inti;

už (i = 1; i <= n; i ++) {

faktorialas = faktorialas * i;

}

printf („Factorial yra% d / n“, faktorialas);

grąžinti 0;

}

Kokie yra rekursijos ir iteracijos panašumai?

  • Abi yra problemos sprendimo būdai.
  • Užduotis gali būti išspręsta rekursija arba iteracija.

Koks skirtumas tarp rekursijos ir iteracijos?

Skirtingas straipsnis viduryje prieš lentelę

Rekursija vs iteracija

Rekursija yra būdas iškviesti tą pačią funkciją. Kartojimas yra nurodymų blokas, kuris kartojamas tol, kol nurodyta sąlyga yra teisinga.
Erdvės sudėtingumas
Rekursinių programų erdvės sudėtingumas yra didesnis nei iteracijų. Erdvės sudėtingumas yra mažesnis iteracijose.
Greitis
Rekursija vykdoma lėtai. Paprastai iteracija yra greitesnė nei rekursija.
Būklė
Jei nėra nutraukimo sąlygos, gali būti begalinis rekursija. Jei sąlyga niekada netaps klaidinga, tai bus begalinis kartojimas.
Sukrauti
Rekursijoje kaminas naudojamas vietiniams kintamiesiems saugoti, kai iškviečiama funkcija. Kartojant kartonas nenaudojamas.
Kodo įskaitomumas
Rekursinė programa yra lengviau skaitoma. Pakartotinę programą sunkiau perskaityti nei rekursinę.

Santrauka - rekursija vs iteracija

Šiame straipsnyje aptariamas rekursijos ir iteracijos skirtumas. Abi gali būti naudojamos sprendžiant programavimo problemas. Skirtumas tarp rekursijos ir iteracijos yra tas, kad rekursija yra mechanizmas, skirtas iškviesti tą pačią funkciją esančią funkciją, o iteracija - vykdyti nurodymų rinkinį pakartotinai, kol duota sąlyga yra teisinga. Jei problemą galima išspręsti rekursine forma, ją galima išspręsti naudojant iteracijas.

Atsisiųskite „Recursion vs Iteration“PDF versiją

Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia Skirtumas tarp rekursijos ir iteracijos

Rekomenduojama: