Forum » Programiranje » rekurzija in iteracija
rekurzija in iteracija
baloh82 ::
lep pozdrav
a mi lahko kdo pove, kaj je razlika med rekurzijo in iteracijo.
OK jasn mi je da rekurzija kliče samo sebe, kaj pa iteracija, kaj je fora iteracija?
Pa čim bolj po domače če mi lahko to objasni :)
hvala
a mi lahko kdo pove, kaj je razlika med rekurzijo in iteracijo.
OK jasn mi je da rekurzija kliče samo sebe, kaj pa iteracija, kaj je fora iteracija?
Pa čim bolj po domače če mi lahko to objasni :)
hvala
WarpedGone ::
Če kapiraš rekurzijo, potem res ne vem kaj ti ni jasno pri iteraciji. To je čistno navadno ponavljanje določenega kosa kode. Naprimer najbolj obična FOR zanka.
Zbogom in hvala za vse ribe
fiction ::
Iterativno bi pot do stacune opisal kot:
dokler nisi tam premikaj noge. To je pac neka zanka.
Z rekurzijo bi pa rekel:
da pridem do stacune moram najprej pogledati ce nisem morda ze tam,
enkrat premakniti nogo, potem (ko sem en korak naprej)
pa lahko ta isti postopek za resevanje kar spet uporabim.
Pogledam ce nisem morda ze v trgovini, enkrat premaknem nogo in se
spet vprasam kaj bi moral narediti (tukaj) da pridem tja. To ustreza
klicu samega sebe znotraj ene funkcije.
V principu se da vsako rekurzijo spremeniti v iteracijo.
dokler nisi tam premikaj noge. To je pac neka zanka.
Z rekurzijo bi pa rekel:
da pridem do stacune moram najprej pogledati ce nisem morda ze tam,
enkrat premakniti nogo, potem (ko sem en korak naprej)
pa lahko ta isti postopek za resevanje kar spet uporabim.
Pogledam ce nisem morda ze v trgovini, enkrat premaknem nogo in se
spet vprasam kaj bi moral narediti (tukaj) da pridem tja. To ustreza
klicu samega sebe znotraj ene funkcije.
V principu se da vsako rekurzijo spremeniti v iteracijo.
fiction ::
Ce pogledas moj primer je dejansko jasno, da bos tako ali tako moral premikati noge.
Razlika je samo v tem kako formaliziras problem in vcasih je nekaj opisati rekurzivno
lazje kot pa s pomocjo iteracije (lep primer je recimo primer Hanoiskih stolpicev).
Razlika je samo v tem kako formaliziras problem in vcasih je nekaj opisati rekurzivno
lazje kot pa s pomocjo iteracije (lep primer je recimo primer Hanoiskih stolpicev).
baloh82 ::
ok se prav teoretično nekak vem zakaj se gre
zdej pa a mi lahko še en pomaga na enem primeru
public class Mnozica {
int en;
Mnozica nasl;
Mnozica() {
}
Mnozica (int en) {
this.en = en;
}
Mnozica presek(Mnozica a, Mnozica b) {
if (a == null || b == null)
return null;
else if(element(a.en, b)) {
Mnozica pres = new Mnozica();
pres.en = a.en;
pres.nasl = presek(a.nasl, b);
return pres;
}
else
return presek(a.nasl, b);
}
}
to je moja metoda v rekurzivni obliki in to bi rad spravil v iterativno
Da vidim kako to deluje v kodi
zdej pa a mi lahko še en pomaga na enem primeru
public class Mnozica {
int en;
Mnozica nasl;
Mnozica() {
}
Mnozica (int en) {
this.en = en;
}
Mnozica presek(Mnozica a, Mnozica b) {
if (a == null || b == null)
return null;
else if(element(a.en, b)) {
Mnozica pres = new Mnozica();
pres.en = a.en;
pres.nasl = presek(a.nasl, b);
return pres;
}
else
return presek(a.nasl, b);
}
}
to je moja metoda v rekurzivni obliki in to bi rad spravil v iterativno
Da vidim kako to deluje v kodi
WarpedGone ::
Torej moraš iterativno določit presek dveh množic?
Na primer:
1.korak: rezultat je prazna množica
2.korak: zanka v kateri za vsak element v A pogledaš, če je tudi v B - če je, ga dodaš v rezultat
3.korak: zanka v kateri za vsak element v B pogledaš, če je tudi v A - če je, pogledaš, če je že v rezultatu - če ni, ga dodaš v rezultat
4. korak: vrneš rezultat
Na primer:
1.korak: rezultat je prazna množica
2.korak: zanka v kateri za vsak element v A pogledaš, če je tudi v B - če je, ga dodaš v rezultat
3.korak: zanka v kateri za vsak element v B pogledaš, če je tudi v A - če je, pogledaš, če je že v rezultatu - če ni, ga dodaš v rezultat
4. korak: vrneš rezultat
Zbogom in hvala za vse ribe
baloh82 ::
v glavnem tista koda zgoraj, jo moram v iterativni obliki napisati
bi nekak pomoje kr v do while vržt al pa kej podobnga
bi nekak pomoje kr v do while vržt al pa kej podobnga
baloh82 ::
zaenkrat mi še ni uspelo, bomo videli do večera kaj bo.
Se vid da sva jst in java kot dan in noč
Se vid da sva jst in java kot dan in noč
Thomas ::
Rekurzija je najlepša, ko toliko časa samo rekurziraš, da ni več kej delat.
Rekurzivni Quick Sort je dober primer tega. Sploh ne sortaš nikoli, samo rekurzivno razbijaš na manjše dele, ki so nazadnje 1 element veliki, pa ni treba sortat.
Rekurzija je včasih dober način, kako se problemu izogniti.
Rekurzivni Quick Sort je dober primer tega. Sploh ne sortaš nikoli, samo rekurzivno razbijaš na manjše dele, ki so nazadnje 1 element veliki, pa ni treba sortat.
Rekurzija je včasih dober način, kako se problemu izogniti.
Man muss immer generalisieren - Carl Jacobi
Zgodovina sprememb…
- spremenil: Thomas ()
Matako ::
Če smo natančni, je iteracija samo drugo ime za ponavljanje. Kakršnokoli. Večinoma se pri nas pod pojem iteracija v programiranju razume procesiranje v zanki brez rekurzije,
/\/\.K.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Programiranje-rekurzijeOddelek: Šola | 1615 (1106) | OrkAA |
» | Java metode;Oddelek: Programiranje | 4992 (4184) | ragezor |
» | Kaj naj si zmislim za O(n^m)?Oddelek: Programiranje | 1064 (949) | Arthur |
» | rekurzivni izračun matrične determinanteOddelek: Programiranje | 2057 (1845) | blabla |
» | rekurzija - problem?Oddelek: Programiranje | 3820 (3384) | Vesoljc |