Forum » Šola » Recursive Functions
Recursive Functions
urg ::
Delam vaje za tekmovanje, in naletel sem na problem, za katerega ne vem, kako se ga lotiti.
In sicer smo danes jemali, recurzivne funkcije (proprave za ACSL), toda jaz kot edini prvi letnik med maturanti vse stavi dojamem bolj počasi.
Skratka, naloga, kjer mam podano funkcijo in moram poiskat vrednost mi je jasna.
Problem pa je nastal pri tej nalogi:
Find f(12) given:
{f(x-2,y+2)+2 if x je večji od y
f(x,y) = {f(x+1,y-1)-1 if x=y
{xy if x je manjši od y
Do zdaj sem imel zmeraj podate vse komponente, ki jih funkcija potrebuje (v tem primeru torej in x in y), toda pri tej nalogi dobim samo x (y), torej 12.
Zaradi tega nimam ideje niti, kako bi nalogo začel.
Seveda bom vprašal tudi v šoli, toda če kdo od vas ve, bom zvedel hitreje.
Hvaležen sem za vsak odgovor.
In sicer smo danes jemali, recurzivne funkcije (proprave za ACSL), toda jaz kot edini prvi letnik med maturanti vse stavi dojamem bolj počasi.
Skratka, naloga, kjer mam podano funkcijo in moram poiskat vrednost mi je jasna.
Problem pa je nastal pri tej nalogi:
Find f(12) given:
{f(x-2,y+2)+2 if x je večji od y
f(x,y) = {f(x+1,y-1)-1 if x=y
{xy if x je manjši od y
Do zdaj sem imel zmeraj podate vse komponente, ki jih funkcija potrebuje (v tem primeru torej in x in y), toda pri tej nalogi dobim samo x (y), torej 12.
Zaradi tega nimam ideje niti, kako bi nalogo začel.
Seveda bom vprašal tudi v šoli, toda če kdo od vas ve, bom zvedel hitreje.
Hvaležen sem za vsak odgovor.
- premaknil iz Pomoč in nasveti: bluefish ()
Yacked2 ::
Se spomnim da smo mi isto to delali na pripravah ja, samo da je bila enačba in si potem moral malo ugibati kaj vstavit, da si dobil kakšne lepe lastnosti fukcije npr: sodost, lihost, periodičnost itd...
Če prav razumem imaš definirano funkcijo f(x, y) = {
f(x-2, y+2) +2 , if x > y
f(x+1, y-1) -1 , if x == y
x*f , if x < y
tebe pa zanima kako izračunati f(x, 12) ?
Ločiš tri opcije glede na x, pač če je x > 12 računaš po 1. varjanti, če je x == 12 potem računaš po 2. varjanti, če pa je x < 12 je pa rezultat kar 12*x.
Če nisem bil dovolj razumnljiv kar prašaj,
lp
Yacked2
Če prav razumem imaš definirano funkcijo f(x, y) = {
f(x-2, y+2) +2 , if x > y
f(x+1, y-1) -1 , if x == y
x*f , if x < y
tebe pa zanima kako izračunati f(x, 12) ?
Ločiš tri opcije glede na x, pač če je x > 12 računaš po 1. varjanti, če je x == 12 potem računaš po 2. varjanti, če pa je x < 12 je pa rezultat kar 12*x.
Če nisem bil dovolj razumnljiv kar prašaj,
lp
Yacked2
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
lebdim ::
Jaz bi napisal rešitev:
To bi šlo za katerokoli vrednost.
function f(x, y: integer):integer; begin if (x > y) then f:=f(x-2, y-2) + 2 else if (x = y) then f:=f(x+1, y-1) - 1 else f:=x*y; end;
To bi šlo za katerokoli vrednost.
lebdim ::
Jaz bi ti razložil takole.
Funkcija mora biti rekurzivna, torej mora klicati "samo sebe". Slediš navodilom. Če je prvi parameter (v tem primeru x) večji od y, mora funkcija vrnit rezultat: f(x-2, y-2) + 2. Če sta oba parametra enaka, mora funkcija vrnit rezultat: f(x+1, y-1) - 1. Če pa je prvi parameter manjši od drugega (torej, če je drugi parameter večji), mora funkcija vrniti njun produkt (x*y).
Sedaj se posvetimo še zgornji kodi: (jaz sem napisal program v Pascalu, ker mi je najbolj "domač").
Najprej preverimo, če je prvi parameter večji od drugega:
Upam, da ti je moja razlaga pomagala k razumevanju naloge!
Funkcija mora biti rekurzivna, torej mora klicati "samo sebe". Slediš navodilom. Če je prvi parameter (v tem primeru x) večji od y, mora funkcija vrnit rezultat: f(x-2, y-2) + 2. Če sta oba parametra enaka, mora funkcija vrnit rezultat: f(x+1, y-1) - 1. Če pa je prvi parameter manjši od drugega (torej, če je drugi parameter večji), mora funkcija vrniti njun produkt (x*y).
Sedaj se posvetimo še zgornji kodi: (jaz sem napisal program v Pascalu, ker mi je najbolj "domač").
Najprej preverimo, če je prvi parameter večji od drugega:
if (x > y). In če je, potem izračunamo vrednost:
f:=f(x-2, y-2) + 2. V naslednjem koraku preverjamo, če sta parametra enaka. To preverimo
else if (x = y). Če sta enaka, potem moramo vrniti
f:=f(x-1,y-1)-1. Če oba pogoja padeta (prvi in drugi), potem vemo, da je prvi parameter zagotovo manjši, zato sem napisal tudi
else. V tem primeru mora funkcija vrniti produkt parametrov, kar sem napisal kot
f:=x*y.
Upam, da ti je moja razlaga pomagala k razumevanju naloge!
urg ::
Mislim, da sem narobe razložil.
Rekruzivno funkcijo kot samo znam rešiti. Dobim funkcijo (f(10,5) ter navodila (parametri: x , y) (z navodili mislim that, that is "given".
Zaplete pa se mi samo pri tej funkciji, ki sem vam jo napisal. Parametra sta x in y poiskati pa moram f(12). Ne vem , ali je 12 x ali y.
Pomojem sem vam narobe razložil. Na začetku ni f(x,12) ampak samo f(12)..
Prosim za nadaljne razlage, sem bolj trd učenec :)
Vseeno hvala za odgovore.
Rekruzivno funkcijo kot samo znam rešiti. Dobim funkcijo (f(10,5) ter navodila (parametri: x , y) (z navodili mislim that, that is "given".
Zaplete pa se mi samo pri tej funkciji, ki sem vam jo napisal. Parametra sta x in y poiskati pa moram f(12). Ne vem , ali je 12 x ali y.
Pomojem sem vam narobe razložil. Na začetku ni f(x,12) ampak samo f(12)..
Prosim za nadaljne razlage, sem bolj trd učenec :)
Vseeno hvala za odgovore.
Yacked2 ::
Si siguren, da si ni v nalogi napake ? Ker še nisem videl funkcije z dvema vhodnima parametroma, kjer lahko podaš samo eno.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
JanK ::
Kaj pa ce fali vejica in je x=1, y=2 (in potemtakem f=2)
"Think about how stupid the average person is,
then realize that 50% are stupider than that"
-George Carlin
then realize that 50% are stupider than that"
-George Carlin
galu ::
@Yacked2
Ena možnost so parametri z default value, druga pa partial function application. No, maš še currying, ampak tam stvar malo drugače zgleda. Vsaj eno od prvih dveh podpira vsak spodoben moderen jezik (khm... Java... khm )
Katerakoli od naštetih možnosti je seveda nesmisel za podano nalogo, ker nima definiranega obnašanja v primeru "želje" po vnosu samo enega parametra.
Pač, napaka v navodilih. Ali pa je OP pozabil kaj dopisati.
Ena možnost so parametri z default value, druga pa partial function application. No, maš še currying, ampak tam stvar malo drugače zgleda. Vsaj eno od prvih dveh podpira vsak spodoben moderen jezik (khm... Java... khm )
Katerakoli od naštetih možnosti je seveda nesmisel za podano nalogo, ker nima definiranega obnašanja v primeru "želje" po vnosu samo enega parametra.
Pač, napaka v navodilih. Ali pa je OP pozabil kaj dopisati.
Tako to gre.
Zgodovina sprememb…
- spremenil: galu ()
Yacked2 ::
@Yacked2
Ena možnost so parametri z default value, druga pa partial function application. No, maš še currying, ampak tam stvar malo drugače zgleda. Vsaj eno od prvih dveh podpira vsak spodoben moderen jezik (khm... Java... khm )
Katerakoli od naštetih možnosti je seveda nesmisel za podano nalogo, ker nima definiranega obnašanja v primeru "želje" po vnosu samo enega parametra.
Pač, napaka v navodilih. Ali pa je OP pozabil kaj dopisati.
Govorimo o matematiki in ne o pogramiranju kjer lahko fukncijo overloadaš kolikor krat hočeš.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
galu ::
Ker hodita programiranje in matematika z roko v roki, obstajajo temelji za to seveda tudi v matematiki.
npr. http://www.seas.gwu.edu/~rhyspj/fall05c...
To pa ni snov srednje sole in se ne da uporabiti za nalogo od OP. Samo opozarjam, da to obstaja.
npr. http://www.seas.gwu.edu/~rhyspj/fall05c...
To pa ni snov srednje sole in se ne da uporabiti za nalogo od OP. Samo opozarjam, da to obstaja.
Tako to gre.
Yacked2 ::
Kompozitum funkcij se obravnava v gimnaziji, ampak ce funkcija rabi dva vhodna elementa, jo lahko se tako bozas pa ne bos skozi spravil samo eno.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
galu ::
Preberi najprej vir, pa potem se moj post, pa ti bo verjetno jasno, kaj sem napisal.
Hint: efektivno pravim isto kot ti.
Hint: efektivno pravim isto kot ti.
Tako to gre.
lebdim ::
No, seveda, da obstajajo funkcije večih spremenljivk, le da se to obravnava na fakulteti pri Analizi 2 ali pa predmetih kot so Funkcije večih spremenljivk, ali kaj podobnega. Kompozitum funkcij se obravnava v 4. letniku gimnazije za realne funkcije, da dobiš en občutek, kaj kompozitum sploh je.
Zgodovina sprememb…
- spremenil: lebdim ()
urg ::
Hvala vam za vse odgovore!
(spoznal sem stvari za katere prej nisem verdel da obstajao )
Kot pa ste že ugotovili, je bila v nalogi napaka. Popravljene naloge na strani ker sem jo snev seveda ni bilo, zaradi tega ves ta kraval.
Pa še vseen hvala za odgovore, sem vsaj nekaj novega zvedel.
(spoznal sem stvari za katere prej nisem verdel da obstajao )
Kot pa ste že ugotovili, je bila v nalogi napaka. Popravljene naloge na strani ker sem jo snev seveda ni bilo, zaradi tega ves ta kraval.
Pa še vseen hvala za odgovore, sem vsaj nekaj novega zvedel.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Izdelava algoritmaOddelek: Znanost in tehnologija | 1543 (923) | Klemen86 |
» | Matlab pomočOddelek: Programiranje | 2110 (1414) | Jan23 |
» | MatematikaOddelek: Šola | 3412 (2192) | Math Freak |
» | Aproksimacija krogaOddelek: Šola | 2226 (1845) | whatever |
» | Numerična matematikaOddelek: Šola | 1737 (1503) | tx-z |