Razlika između rekurzije i iteracije

Ključna razlika - rekurzija vs Iteracija
 

Za rješavanje problema s programiranjem mogu se upotrijebiti rekurzija i iteracija. Pristup rješavanju problema pomoću rekurzije ili iteracije ovisi o načinu rješavanja problema. ključna razlika između rekurzije i iteracije je to rekurzija je mehanizam za pozivanje funkcije unutar iste funkcije dok je iteracija opetovano izvoditi skup uputa sve dok je zadani uvjet istinit. Rekurzija i iteracija su glavne tehnike za razvoj algoritama i izgradnju softverskih aplikacija.

SADRŽAJ

1. Pregled i ključne razlike
2. Što je rekurzija
3. Što je iteracija
4. Sličnosti između rekurzije i iteracije
5. Usporedna usporedba - rekurzija vs iteracija u tabelarnom obliku
6. Sažetak

Što je rekurzija?

Kada se funkcija zove unutar funkcije ona je poznata kao Rekurzija. Postoje dvije vrste rekurzije. Oni su konačna rekurzija i beskonačna rekurzija. Konačna rekurzija ima prekidno stanje. Beskonačna rekurzija nema uvjet završetka.

Rekurzija se može objasniti pomoću programa za izračunavanje fabrika.

n! = n * (n-1) !, ako je n> 0

n! = 1, ako je n = 0;

Pogledajte donji kôd da biste izračunali faktor iz 3 (3! = 3 * 2 * 1).

intmain ()

int vrijednost = faktorski (3);

printf (vrijednost faktora je% d \ n);

vratiti 0;

intfactorial (intn)

ako je (n == 0)

povratak 1;

drugo

vratiti n * faktorije (n-1);

Prilikom pozivanja faktororija (3) ta će se funkcija nazvati faktografskom (2). Prilikom pozivanja faktororija (2) ta će se funkcija nazvati faktografskim (1). Tada će faktororial (1) nazvati faktororial (0). faktororial (0) će se vratiti 1. U gornjem programu n == 0 je osnovni uvjet u "if block". Prema Slično tome, faktografska funkcija poziva se iznova i iznova.

Rekurzivne funkcije povezane su sa snopom. U C-u glavni program može imati mnogo funkcija. Dakle, main () je funkcija pozivanja, a funkcija koju glavni program naziva nazvana funkcija. Kada se funkcija zove, kontrola se daje pozvanoj funkciji. Nakon dovršetka izvršenja funkcije, kontrola se vraća u glavnu. Zatim se nastavlja glavni program. Dakle, to stvara aktivacijski zapis ili okvir snopa za nastavak izvršenja.

Slika 01: Rekurzija

U gornjem programu, kad zovete faktororial (3) iz glavnog, on kreira aktivacijski zapis u skupu poziva. Zatim se na vrhu snopa stvara tvornički (2) okvir snopa i tako dalje. Zapis o aktivaciji čuva podatke o lokalnim varijablama itd. Svaki put kada se funkcija pozove, novi se skup lokalnih varijabli stvara na vrhu snopa. Ovi okviri snopa mogu usporiti brzinu. Isto tako u rekurziji, funkcija naziva sebe. Vremenska složenost rekurzivne funkcije nalazi se prema broju puta, a funkcija se naziva. Vremenska složenost za jedan funkcijski poziv je O (1). Za n broj rekurzivnih poziva, vremenska složenost je O (n).

Što je iteracija?

Iteracija je blok uputa koje se ponavljaju iznova i iznova dok navedeni uvjet nije istinit. Iteracija se može postići uporabom "za petlju", "petlje dok traje" ili "dok petlja". Sintaksa "za petlju" je sljedeća.

for (inicijalizacija; uvjet; izmijeniti)

// izjave;

Slika 02: "za dijagram toka petlje"

Korak inicijalizacije prvo se izvršava. Ovaj je korak proglašavanje i inicijalizacija varijabli upravljanja petljom. Ako je uvjet istinit, izjave unutar kovrčavih zagrada izvršavaju se. Te se izjave izvršavaju dok uvjet nije istinit. Ako je uvjet lažan, kontrola prelazi na sljedeću izjavu nakon "za petlju". Nakon izvršenja izjava unutar petlje, kontrola ide na modificiranje odjeljka. To je ažuriranje varijable za upravljanje petljom. Tada se uvjet ponovno provjerava. Ako je uvjet istinit, izvršavat će se izjave unutar kovrčavih zagrada. Na ovaj način se ponavlja "za petlju".

U "dok petlja", izjave unutar petlje izvršavaju se dok uvjet nije istinit.

dok (uvjet)

// izjave

U petlji "radi dok radim", stanje se provjerava na kraju petlje. Dakle, petlja se izvršava barem jednom.

čini

// izjave

while (uvjet)

Program za pronalaženje tvornice 3 (3!) Pomoću iteracije („za petlju“) je sljedeći.

int main ()

intn = 3, faktorski = 1;

Inti;

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

faktografski = faktografski * i;

printf ("Faktororial je% d \ n", faktorski faktor);

vratiti 0;

Koje su sličnosti između rekurzije i iteracije?

  • Oboje su tehnike rješavanja problema.
  • Zadatak se može riješiti bilo u rekurziji ili u iteraciji.

Koja je razlika između rekurzije i iteracije?

Rekurzija vs ponavljanje

Rekurzija je metoda pozivanja funkcije unutar iste funkcije. Iteracija je blok uputa koje se ponavljaju dok navedeni uvjet nije istinit.
Svemirska složenost
Složenost prostora rekurzivnih programa veća je od iteracija. Složenost prostora manja je u iteracijama.
Ubrzati
Izvođenje rekurzije je sporo. Obično je iteracija brža od rekurzije.
Stanje
Ako nema prekidnog stanja, može doći do beskonačne rekurzije. Ako uvjet nikad ne postane lažan, bit će to beskrajna iteracija.
Stog
U rekurziji, stog se koristi za spremanje lokalnih varijabli kada se funkcija zove. U iteraciji, stog se ne koristi.
Čitljivost koda
Rekurzivni program je čitljiviji. Iтераtivni program je teže pročitati nego rekurzivni.

Sažetak - rekurzija vs Iteracija

Ovaj članak govori o razlici između rekurzije i iteracije. Oboje se mogu koristiti za rješavanje problema programiranja. Razlika između rekurzije i iteracije je u tome što je rekurzija mehanizam za pozivanje funkcije unutar iste funkcije i iteracija je za izvršavanje skupa uputa više puta dok zadani uvjet nije istinit. Ako se problem može riješiti u rekurzivnom obliku, također se može riješiti iteracijama.

Preuzmite PDF verziju Recursion vs Iteration

Možete preuzeti PDF verziju ovog članka i koristiti je za izvanmrežne svrhe, prema napomeni. Molimo preuzmite PDF verziju ovdje Razlika između rekurzije i ponavljanja

Referenca:

1.Point, Vodiči. „Osnove strukture struktura i algoritmi algoritama.“, Tutorials Point, 15. kolovoza 2017. Dostupno ovdje 
2.nareshtechnologies. "Rekurzija u C funkcijama | C Language Tutorial ”YouTube, YouTube, 12. rujna 2016. Dostupno ovdje  
3.yusuf shakeel. “Algoritam rekurzije | Faktorski - vodič kroz korak ”YouTube, YouTube, 14. listopada 2013. Dostupno ovdje  

Ljubaznošću slike:

1.'CPT-Recursion-Factorial-Code'By Pluke - Vlastito djelo, (Public Domain) putem Commons Wikimedia 
2. 'Za dijagram sa petljom' Ne nudi se stroj čitljiv autor - Pretpostavljen vlastiti rad. (CC BY-SA 2.5) putem Commons Wikimedia