» »

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

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.

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

Zgodovina sprememb…

  • spremenil: detroit ()

Spura ::

detroit je izjavil:

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
Skero

Zgodovina sprememb…

  • spremenil: detroit ()


Vredno ogleda ...

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

[c#] ukaz radirka

Oddelek: Programiranje
91039 (832) japol
»

[c#] picturebox, slika na sliko

Oddelek: Programiranje
151011 (821) japol
»

[C#] Spreminjanje fahrenheitov v celzije

Oddelek: Programiranje
51286 (1141) blackwing
»

C# textbox polnjenje

Oddelek: Programiranje
71517 (1382) Mitja Bonča
»

c# class

Oddelek: Programiranje
342156 (1750) japol

Več podobnih tem