Ključna razlika: U programiranju se rekurzija može objasniti razmatranjem rekurzivne funkcije. Rekurzivna funkcija je ona koja se ponovno poziva da ponovi kod. S druge strane, iteracija se postiže iterativnom funkcijom koja ponavlja neke dijelove koda.
U programiranju se rekurzija i iteracija koriste za postizanje ponavljanja. Oni se odnose na proces koji se ponavlja više puta. Rekurzija se temelji na pristupu u kojem se nešto odnosi na sebe dok se ne zadovolji uvjet. Za metodu se kaže da je rekurzivna ako se može pozvati izravno ili neizravno kao -
{
... Ime() ...
}
ili
void name ()
{
... igra() ...
}
void game () {
... Ime() ...
}
Za uspješnu rekurziju treba imati na umu da svaki poziv izvršen u procesu rekurzije mora pojednostaviti računanje. Rekurzija se postiže definiranjem osnovnog slučaja.
int factorial (int N)
{
if (N == 0) vrati 1;
inače se vrati (N * faktorijalno (N-1));
}
U ovom primjeru, rekurzija se lako može vidjeti u izjavi (N * faktorijalni (N-1)), gdje ponovno poziva funkcijsku funkciju. Rekurzija je vrlo korisna jer pomaže u skraćivanju koda. Međutim, rekurzija je malo spora u izvedbi.
funkcijska funkcija (n)
{
var petlja, rezultat;
rezultat = 1;
za (petlja 1; petlja <n, petlja ++)
{
rezultat = petlja rezultata;
}
povratni rezultat;
}
U ovom primjeru, petlje se postiže korištenjem cijelih brojeva od 1 do n, a izraz <= n se koristi kao kriterij za zaustavljanje daljnjeg petljanja. Stoga možemo zaključiti da se isti rezultati mogu postići korištenjem rekurzije i iteracije. Međutim, obje se temelje na pristupima koji su malo drugačiji. Bilo koji rekurzivni algoritam može biti napisan pomoću iteracija (petlji).
Usporedba rekurzije i ponavljanja:
rekurzije | ponavljanje | |
definicija | Rekurzija se odnosi na rekurzivnu funkciju u kojoj se ponovno poziva da ponovi kod. | Ponavljanje se postiže iterativnom funkcijom koja ponavlja neke dijelove koda. |
Važna točka | Potrebno je odrediti osnovni slučaj | Potrebno je odrediti uvjet prekida |
Izvođenje | Usporedno sporo | Usporedno brzo |
Upotreba memorije | Komparativno više | Komparativno manje |
Kodirati | Manji | Više |
Beskonačno ponavljanje | Beskonačna rekurzija je u stanju srušiti sustav | Beskonačna petlja opetovano troši procesorske cikluse |
Struktura | Izbor | Ponavljanje |
Lokalne varijable | Nije obavezno | Potreban |