Rekursiooni Ja Iteratsiooni Erinevus

Sisukord:

Rekursiooni Ja Iteratsiooni Erinevus
Rekursiooni Ja Iteratsiooni Erinevus

Video: Rekursiooni Ja Iteratsiooni Erinevus

Video: Rekursiooni Ja Iteratsiooni Erinevus
Video: Review: Quiz 0 2024, Mai
Anonim

Peamine erinevus - rekursioon vs iteratsioon

Rekursiooni ja iteratsiooni saab kasutada programmeerimisprobleemide lahendamiseks. Lähenemine probleemi lahendamiseks rekursiooni või iteratsiooni abil sõltub probleemi lahendamise viisist. Peamine erinevus rekursiooni ja iteratsiooni vahel on see, et rekursioon on mehhanism, mis kutsub funktsiooni sama funktsiooni piires, samal ajal kui iteratsioon on käskude komplekti korduv täitmine, kuni antud tingimus on tõene. Rekursioon ja iteratsioon on algoritmide väljatöötamise ja tarkvararakenduste loomise peamised tehnikad.

SISU

1. Ülevaade ja peamine erinevus

2. Mis on rekursioon

3. Mis on iteratsioon

4. Rekursiooni ja iteratsiooni sarnasused

5. Kõrvuti võrdlus - rekursioon vs iteratsioon tabelina

6. Kokkuvõte

Mis on rekursioon?

Kui funktsioon kutsub ennast funktsiooni piires, on see tuntud kui rekursioon. Rekursiooni on kahte tüüpi. Need on lõplik rekursioon ja lõpmatu rekursioon. Lõplik rekursioon on lõpetava tingimusega. Lõputul rekursioonil ei ole lõppevat tingimust.

Rekursiooni saab seletada programmi abil faktooride arvutamiseks.

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

n! = 1, kui n = 0;

3 (3! = 3 * 2 * 1) arvutamiseks pöörduge allpool toodud koodi poole.

intmain () {

int väärtus = faktoriaal (3);

printf (“Faktor on% d / n”, väärtus);

tagastus 0;

}

teguriteta (intn) {

kui (n == 0) {

tagastus 1;

}

veel {

tagastus n * faktoriaal (n-1);

}

}

Faktooriumi (3) kutsumisel kutsub see funktsioon faktoriaaliks (2). Faktooriumi (2) kutsumisel kutsub see funktsioon faktoriaaliks (1). Siis faktoriaal (1) kutsub faktoriaali (0). faktoriaal (0) tagastab 1. Ülaltoodud programmis on baastingimuseks n == 0 tingimus “if blockis”. Sarnaselt kutsutakse faktorite funktsiooni uuesti ja uuesti.

Rekursiivsed funktsioonid on seotud virnaga. C-s võib põhiprogrammil olla palju funktsioone. Niisiis, main () on kutsumisfunktsioon ja põhiprogrammi poolt kutsutud funktsioon on funktsioon. Funktsiooni kutsumisel antakse kontroll kutsutud funktsioonile. Pärast funktsiooni täitmise lõpetamist tagastatakse juhtelement põhiseadmesse. Siis jätkub põhiprogramm. Niisiis loob see käivitamise jätkamiseks aktiveerimiskirje või korstna raami.

Rekursiooni ja iteratsiooni erinevus
Rekursiooni ja iteratsiooni erinevus

Joonis 01: rekursioon

Ülalnimetatud programmis loob faktoriaalile (3) peaosast helistades aktiveerimiskirje kõnepinu. Seejärel luuakse virna kohale faktoori (2) virna raam ja nii edasi. Aktiveerimiskirje hoiab teavet kohalike muutujate jne kohta. Iga kord, kui funktsiooni kutsutakse, luuakse virna ülaossa uus kohalike muutujate komplekt. Need virnaraamid võivad kiirust aeglustada. Samamoodi rekursi korral kutsub funktsioon ennast. Rekursiivse funktsiooni aja keerukus leitakse kordade arvu järgi, funktsiooni kutsutakse. Ühe funktsioonikõne ajaline keerukus on O (1). N rekursiivsete kõnede arvu korral on aja keerukus O (n).

Mis on kordus?

Iteratsioon on käskude plokk, mida korratakse ikka ja jälle, kuni antud tingimus on tõene. Korduse saab saavutada, kasutades „for loop“, „do-while loop“või „while loop“. "For loop" süntaks on järgmine.

for (initsialiseerimine; tingimus; muuda) {

// avaldused;

}

Peamine erinevus rekursiooni ja iteratsiooni vahel
Peamine erinevus rekursiooni ja iteratsiooni vahel

Joonis 02: „silmuse vooskeemi jaoks”

Esmalt käivitatakse lähtestamise samm. See samm on deklareerida ja initsialiseerida silmusjuhtimise muutujad. Kui tingimus on tõene, täidetakse lokkisulgudes olevad laused. Need avaldused täidetakse seni, kuni tingimus on tõene. Kui tingimus on vale, liigub kontroll järgmise lause peale „for loop”. Pärast tsükli sees olevate lausete täitmist läheb juhtelement jaotist muutma. See on silmuse juhtmuutuja värskendamine. Seejärel kontrollitakse seisundit uuesti. Kui tingimus on tõene, täidetakse lokkisulgudes olevad laused. Nii kordub “for loop”.

Jaos „while loop” täidetakse tsükli sees olevad laused seni, kuni tingimus on tõene.

while (tingimus) {

// avaldused

}

Tsüklis „do-while” kontrollitakse tsükli lõpus olekut. Niisiis, tsükkel täidetakse vähemalt üks kord.

tee {

// avaldused

} while (tingimus)

Programm 3 (3!) Faktori leidmiseks iteratsiooni abil ("tsükli jaoks") on järgmine.

int main () {

intn = 3, faktoriaal = 1;

inti;

jaoks (i = 1; i <= n; i ++) {

faktoriaal = faktoriaal * i;

}

printf (“Factorial on% d / n”, faktorial);

tagastus 0;

}

Millised on rekursiooni ja kordumise sarnasused?

  • Mõlemad on probleemi lahendamise tehnikad.
  • Ülesande saab lahendada kas rekursioonis või iteratsioonis.

Mis vahe on rekursiooni ja korduse vahel?

Erinev artikkel keskel enne tabelit

Rekursioon vs iteratsioon

Rekursioon on meetod funktsiooni kutsumiseks sama funktsiooni piires. Iteratsioon on käskude plokk, mis kordub seni, kuni antud tingimus on tõene.
Ruumi keerukus
Rekursiivsete programmide ruumi keerukus on suurem kui kordused. Ruumi keerukus on iteratsioonides väiksem.
Kiirus
Rekursiooni teostamine on aeglane. Tavaliselt on iteratsioon kiirem kui rekursioon.
Seisund
Kui lõpetamistingimust pole, võib esineda lõpmatu rekursioon. Kui tingimus ei muutu kunagi valeks, on see lõpmatu kordus.
Virn
Rekursioonis kasutatakse virna funktsiooni kutsumisel kohalike muutujate salvestamiseks. Iteratsioonis virna ei kasutata.
Koodi loetavus
Rekursiivne programm on paremini loetav. Kordusprogrammi on raskem lugeda kui rekursiivset programmi.

Kokkuvõte - rekursioon vs iteratsioon

Selles artiklis käsitleti rekursiooni ja iteratsiooni erinevust. Mõlemat saab kasutada programmeerimisprobleemide lahendamiseks. Rekursiooni ja iteratsiooni erinevus seisneb selles, et rekursioon on mehhanism, mis kutsub funktsiooni sama funktsiooni piires ja iteratsioon käskude komplekti korduvalt täitma, kuni antud tingimus on tõene. Kui probleemi saab lahendada rekursiivsel kujul, saab selle lahendada ka iteratsioonide abil.

Laadige alla rekursiooni vs iteratsiooni PDF-versioon

Selle artikli PDF-versiooni saate alla laadida ja kasutada võrguühenduseta eesmärkidel, nagu tsiteeritud. Laadige siit alla PDF-versioon. Rekursiooni ja korduse erinevus

Soovitatav: