Forum » Programiranje » Rekurzivna funkcija
Rekurzivna funkcija
beatmaster7 ::
Hey
Rabim pomoč pri teli nalogi
Napisi rekurzivno funkcijo, ki izračuna x na y. Vrednosti x in y sta vneseni preko konzole.
Prosim dajte kakšen namig
:)
Rabim pomoč pri teli nalogi
Napisi rekurzivno funkcijo, ki izračuna x na y. Vrednosti x in y sta vneseni preko konzole.
Prosim dajte kakšen namig
:)
h1427096 ::
Predvidevam da je y naravno število. V tem primeru lahko razmišljaš nekako takole:
x^y = x*x^(y-1)
se pravi:
fn(x,y) = x*fn(x,y-1)
Potrebno je ugotoviti še kdaj se funkcija zaključi. To se zgodi takrat, ko pade vrednost y na 0 (karkoli na 0 = 1)
funkcija bo torej sprejela 2 parametra: x in y
če bo vrednost y = 0, bo vrnila vrednost 1
v nasprotnem primeru bo klicala samo sebe s parametroma x in y-1 in dobljeno vrednost pomnožila z x.
x^y = x*x^(y-1)
se pravi:
fn(x,y) = x*fn(x,y-1)
Potrebno je ugotoviti še kdaj se funkcija zaključi. To se zgodi takrat, ko pade vrednost y na 0 (karkoli na 0 = 1)
funkcija bo torej sprejela 2 parametra: x in y
če bo vrednost y = 0, bo vrnila vrednost 1
v nasprotnem primeru bo klicala samo sebe s parametroma x in y-1 in dobljeno vrednost pomnožila z x.
detroit ::
power(x, y)
{
y-1
x *= x
if y != 0
pow(x, y)
}
mogoče tole celo dela, sori sm z levo možgansko polovico tipkam tole, ker z desno berem poročila:)
oops en problem sm opazu hehe rabiš še vmesni tempx
{
y-1
x *= x
if y != 0
pow(x, y)
}
mogoče tole celo dela, sori sm z levo možgansko polovico tipkam tole, ker z desno berem poročila:)
oops en problem sm opazu hehe rabiš še vmesni tempx
Skero
Zgodovina sprememb…
- spremenil: detroit ()
detroit ::
hoho ekola z goljufijo:D
private int tempx;
private void button1_Click(object sender, EventArgs e)
{
tempx = int.Parse(textBox1.Text);
power(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
}
public void power(int x, int y)
{
y--;
x *= tempx;
if (y != 1)
power(x, y);
else
button1.Text = x.ToString();
}
če imaš javo pač si predstavljaj tist eventhandler za button click kot main(args ..)
private int tempx;
private void button1_Click(object sender, EventArgs e)
{
tempx = int.Parse(textBox1.Text);
power(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
}
public void power(int x, int y)
{
y--;
x *= tempx;
if (y != 1)
power(x, y);
else
button1.Text = x.ToString();
}
če imaš javo pač si predstavljaj tist eventhandler za button click kot main(args ..)
Skero
Zgodovina sprememb…
- spremenil: detroit ()
Spura ::
hoho ekola z goljufijo:D
private int tempx;
private void button1_Click(object sender, EventArgs e)
{
tempx = int.Parse(textBox1.Text);
power(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
}
public void power(int x, int y)
{
y--;
x *= tempx;
if (y != 1)
power(x, y);
else
button1.Text = x.ToString();
}
če imaš javo pač si predstavljaj tist eventhandler za button click kot main(args ..)
Zakaj uporabljas zacasno globalno variablo. (bug prone)
Zakaj zmanjsas y na zacetku funkcije namesto v rekurzivnem klicu. (bug prone)
Zakaj funkcija ne vrne vrednosti tko kot je zahtevano?
Zakaj nimas repne rekurzije?
Zakaj imas v funkciji, ki se ukvarja z racunanjem potence GUI logiko? (button1.Text = x.ToString();)
Kaj se zgodi ce je vnesen eksponent 1? Stack overflow. (bug)
Kaj se zgodi ce je vnesen eksponent 0? Stack overflow + ne bi delalo, tudi ce ga ne bi bilo. (bug)
public int power(int x, int y) { if (y = 0) { return 1; } else { return power(x, y - 1) * x; } }
Oziroma verzija z negativnimi potencami:
public float power(int x, int y) { if (y = 0) { return 1.0f; } else if (y < 0) { return power(x, y + 1) / x; } else { return power(x, y - 1) * x; } }
detroit ::
click handler je kot sm reku rezultat sprotnega dela lepo vse piše..pravzaprav je VSE rezultat dejstva, da vmes pišem poročila in jih berem
osnovna logika je tm tm semi correct
osnovna logika je tm tm semi correct
Skero
Zgodovina sprememb…
- spremenil: detroit ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] ukaz radirkaOddelek: Programiranje | 1111 (904) | japol |
» | [c#] picturebox, slika na slikoOddelek: Programiranje | 1085 (895) | japol |
» | [C#] Spreminjanje fahrenheitov v celzijeOddelek: Programiranje | 1365 (1220) | blackwing |
» | C# textbox polnjenjeOddelek: Programiranje | 1627 (1492) | Mitja Bonča |
» | c# classOddelek: Programiranje | 2262 (1856) | japol |