» »

A se komu sanja kaj o rekurziji v c++

A se komu sanja kaj o rekurziji v c++

Enzo77 ::

Prosim, da mi eden razlozi na preprostem primeru.

hvala.
With a license to gib :)

jeti ::

rekurzija pomeni, da nek podprogram kliče samega sebe, in sicer z malo spremenjenimi parametri.

Bom dal za primer izracun fakulete (n!):

int fakulteta(int n) {
if (n<0) ERROR; //n mora biti nenegativen

if (n==0)
return 1; //po definiciji je 0! = 1
else
return (n*fakulteta(n-1)); //rekurzivni klic samega sebe
}

kaj zadeva naredi? poklice samo sebe, vsakic z za 1 manjsim stevilom.
recimo da pri klicu funkcije za argument das stevilo 5:
fuknkcija bo vrnila 5*fakulteta(5-1), torej 5*fakulteta(4)
seveda je treba izracunati, koliko je fakulteta 4, zato se bo izvedla ena kopija funkcije fakulteta, le da z argumentom 4.
Vrnila bo 4*fakulteta(3). fakulteta(3) bo vrnila 3*fakulteta(2)...

...potem se bo poklicala fakulteta(0), ki bo vrnila 1.
zato bo funkcija fakulteta(1) vrnila 1*fakulteta(0) = 1
rezultat se bo uporabil pri prejsnjem klicu fakulteta(2), ki bo vrnil 2*fakulteta(1) = 2*1 =1

in tako naprej, najbolj prvi klic fakulteta(5) bo vrnil 5*fakulteta(4) = 5*24 = 120.

Se pravi, program poklice samega sebe in nekje drugje izvede celoten postopek (samega sebe) z malo drugacnimi argumenti, potem pa rezultat tega postopka uporabi pri sebi. Tako je klic "fakulteta(5)" poklical samega sebe fakulteta(4), ki je izracunal neko vrednost, nato pa je "fakulteta(5)" to vrednost uporabil pri sebi.


Tko nekak. :P
Bolje vrabec v roki kot (p)tič v riti!
Včasih je bil http://come.to/jeti

Zgodovina sprememb…

  • spremenil: jeti ()

DarkWIng ::

rekurzija : glej rekurzija :D
You're a wonderful friend and a raving psycho.

[kren] ::

rekurzija je lahko ob nepravilnem ravnanju tud izjemno nevarna zadeva, ni tezko tko obesit tvojega programa. tko da malo pazi glede tega..

mazgonar ::

če, kdo rabi mu lahko pošljem tutorial c-ja v slovenščini :P

freejack ::

Če še enega pošlješ na freejack_inc@yahoo.com, ti bom mucho hvaležen,.. :) 10x (obrazložitev prošnje; študent FRI,..dovolj povedano,..)

darh ::

mazgonar.. ko boš že ravno pošiljal... še v moj mailbox butni enga xbite@exonium.net
Excuses are useless! Results are priceless!

[kren] ::

Enzo77 ::

jz se tud ne branim: :)
With a license to gib :)

mazgonar ::

LP!

Vidim, da vas je več zato sem ga dal tuki gor http://www.sunrise.si/razno/c++.zip . Xbite, tebi sem ga pe že poslal, remember me?

Lp vsem!


Vredno ogleda ...

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

[C#] Domača naloga za faks

Oddelek: Programiranje
172095 (1719) Spura
»

Naloga iz Putka - UPM

Oddelek: Programiranje
242217 (1553) NejcSSD
»

C# (strani: 1 2 )

Oddelek: Programiranje
9712049 (8884) Ericssony
»

C# je mozna referenca do int izven funkcije (direkt v classu torej)

Oddelek: Programiranje
81609 (1423) TopCat
»

[Java] Kako filtrirati, katera števila lahko vpišeš?

Oddelek: Programiranje
182079 (1781) fiction

Več podobnih tem