Rekursiooni ja iteratsiooni erinevus

Peamine erinevus - rekursioon vs iteratsioon
 

Programmeerimisprobleemide lahendamiseks saab kasutada rekursiooni ja iteratsiooni. Rekursiooni või iteratsiooni abil probleemi lahendamise viis sõltub probleemi lahendamise viisist. võtme erinevus rekursiooni ja iteratsiooni vahel on see rekursioon on sama funktsiooni funktsiooni kutsumise mehhanism, samal ajal kui iteratsioon on käskude komplekti korduv täitmine, kuni antud tingimus on tõene. Rekursioon ja iteratsioon on peamised tehnikad algoritmide väljatöötamiseks ja tarkvararakenduste loomiseks.

SISU

1. Ülevaade ja peamised erinevused
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 nimetab ennast funktsiooni piires, nimetatakse seda rekursiooniks. Rekursioone on kahte tüüpi. Need on piiratud rekursioon ja lõpmatu rekursioon. Piiratud rekursioon on lõpetava tingimusega. Lõpmatu rekursioon ei ole lõpetavat tingimust.

Rekursiooni saab selgitada programmi abil faktoriaalide arvutamiseks.

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

n! = 1, kui n = 0;

Faktorite 3 arvutamiseks vaadake lõõtsa koodi (3! = 3 * 2 * 1).

intmain ()

int väärtus = faktoriaal (3);

printf (“Faktoriaal on% d \ n”, väärtus);

tagasi 0;

sisemine (rahvusvaheline)

if (n == 0)

tagasi 1;

veel

tagasi n * faktoriaal (n-1);

Faktoriaalsele (3) helistamisel kutsub see funktsioon faktoriaal (2). Faktoriaalsele (2) helistamisel kutsub see funktsioon faktorit (1). Siis nimetatakse faktoriaaliks (1) faktoriaaliks (0). faktoriaal (0) naaseb 1. Ülaltoodud programmis on n == 0 tingimus tingimusel, kui plokk on põhitingimus. Samamoodi kutsutakse faktoriaalfunktsiooni ikka ja jälle.

Rekursiivsed funktsioonid on seotud virnaga. C-s võib põhiprogrammil olla palju funktsioone. Niisiis, main () on kutsumisfunktsioon ja funktsioon, mida põhiprogramm kutsub, on kutsutud funktsioon. Kui funktsioon kutsutakse, antakse juhtimine kutsutud funktsioonile. Pärast funktsiooni täitmist viiakse juhtimisseade tagasi peamisse. Seejärel jätkub põhiprogramm. Niisiis loob täitmise jätkamiseks aktiveerimisrekordi või virna raami.

Joonis 01: Rekursioon

Ülaltoodud programmis loob faktoriaalile (3) põhinumbrilt helistades aktiveerimiskirje kõnesse. Seejärel luuakse virna peale faktoriaal (2) virnaraam jne. Aktiveerimiskirje hoiab teavet kohalike muutujate jms kohta. Iga kord, kui funktsiooni kutsutakse, luuakse virna ülaosas uus lokaalsete muutujate komplekt. Need virnaraamid võivad kiirendada. Samamoodi nagu rekursioon, kutsub funktsioon ennast ise. Rekursiivse funktsiooni ajaline keerukus leitakse mitu korda, funktsiooni kutsutakse. Ühe funktsioonikõne ajaline keerukus on O (1). N arvu rekursiivsete kõnede korral on aja keerukus O (n).

Mis on iteratsioon?

Iteratsioon on juhiste blokk, mida korratakse ikka ja jälle, kuni antud tingimus on täidetud. Itereerimist saab teha kasutades „silmuse jaoks”, „tegemise ajaks” või „samal ajal”. „Silmuse jaoks” süntaks on järgmine.

jaoks (lähtestamine; tingimus; muutmine)

// avaldused;

Joonis 02: silmusvooskeemi jaoks

Kõigepealt käivitatakse lähtestamise samm. See samm on silmuskontrolli muutujate deklareerimine ja initsialiseerimine. Kui tingimus on tõene, täidetakse lokirullide sees olevad avaldused. Neid avaldusi täidetakse seni, kuni tingimus on tõene. Kui tingimus on vale, liigub kontroll järgmise lause juurde pärast „silmuse” järele. Pärast ahelas olevate avalduste täitmist läheb kontroll jaotise muutmiseks. See on silmukontrolli muutuja värskendamine. Seejärel kontrollitakse uuesti seisukorda. Kui tingimus on tõene, täidetakse lokkis traksides olevad avaldused. Nii itereerib „silmuse jaoks“.

„Kuigi silmus”, silmuse sees olevad avaldused täidetakse, kuni tingimus on tõene.

kuigi (tingimus)

// avaldused

Ajas, mis on tehtud, seisukorda kontrollitakse silmuse lõpus. Niisiis, silmus käivitub vähemalt üks kord.

tee

// avaldused

while (tingimus)

Programm teguri 3 (3!) Leidmiseks iteratsiooni abil (“silmuse jaoks”) on järgmine.

int main ()

intn = 3, faktoriaal = 1;

inti;

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

faktoriaal = faktuaalne * i;

printf (“Faktoriaal on% d \ n”, faktoriaal);

tagasi 0;

Millised on rekursiooni ja iteratsiooni sarnasused?

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

Mis vahe on rekursioonil ja iteratsioonil??

Rekursioon vs iteratsioon

Rekursioon on sama funktsiooni funktsiooni kutsumise meetod. Iteratsioon on juhiste plokk, mida korratakse seni, kuni antud tingimus on täidetud.
Ruumi keerukus
Rekursiivsete programmide ruumi keerukus on suurem kui iteratsioonid. Ruumi keerukus on iteratsioonides väiksem.
Kiirus
Rekursiooni läbiviimine on aeglane. Tavaliselt on iteratsioon kiirem kui rekursioon.
Seisund
Kui lõpetamise tingimust pole, võib esineda lõpmatu rekursioon. Kui seisund ei muutu kunagi valeks, on see lõpmatu iteratsioon.
Stack
Rekursioonina kasutatakse virna kohalike muutujate salvestamiseks, kui funktsiooni kutsutakse. Iteratsioonis virna ei kasutata.
Koodiloetavus
Rekursiivne programm on paremini loetav. Iteratiivset programmi 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 sama funktsiooni funktsiooni kutsumise ja iteratsiooni käskude komplekti korduvaks täitmiseks mehhanism, 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 seda võrguühenduseta otstarbel kasutada tsitaatide märkuse kohaselt. Laadige alla PDF-versioon siit. Rekursiooni ja iteratsiooni erinevus

Viide:

1.Punkt, juhendid. “Andmestruktuuride ja algoritmide rekursiooni alused.”, Juhendite punkt, 15. august 2017. Saadaval siin 
2.nareshtechnologies. “Rekursioon C-funktsioonides | C keeleõpetus ”YouTube, YouTube, 12. september 2016. Saadaval siin  
3.yusuf shakeel. “Rekursiooni algoritm | Faktoriaal - samm-sammuline juhend ”YouTube, YouTube, 14. oktoober 2013. Saadaval siin  

Pilt viisakalt:

1.'CPT-Rekursioon-faktoorne kood'By Pluke - Enda töö, (avalikus omanduses), Commonsis Wikimedia 
2.'lülisskeem'il pole ühtegi masinloetavat autorit - oma töö eeldatakse. (CC BY-SA 2.5) Commonsi Wikimedia kaudu