» »

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

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

BigWhale ::

A lahko recemo, da je iteracija eno izvajanje rekurzivne zanke?

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.

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).

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

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
Zbogom in hvala za vse ribe

baloh82 ::

hvala, gremo tole zdejle probat shekat :) če kej ne rata javim

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

Backup22 ::

Jep, while ali for;) S tem ravno iteriraš dokler ne prožiš nekega pogoja...
//

baloh82 ::

bomo vidl če bo kej ratao iz tega

baloh82 ::

zaenkrat mi še ni uspelo, bomo videli do večera kaj bo.
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.
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Programiranje-rekurzije

Oddelek: Šola
151483 (974) OrkAA
»

Java metode;

Oddelek: Programiranje
354551 (3743) ragezor
»

Kaj naj si zmislim za O(n^m)?

Oddelek: Programiranje
8988 (873) Arthur
»

rekurzivni izračun matrične determinante

Oddelek: Programiranje
131980 (1768) blabla
»

rekurzija - problem?

Oddelek: Programiranje
373691 (3255) Vesoljc

Več podobnih tem