Archief - Vergelijking ASP.NET

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

wartaal

Legacy Member
Hey,

We zijn op school net hiermee begonnen, maar loop een beetje vast nu.

Het is de bedoeling om y = 1 + x + x^2 + ... + x^n te berekenen.

x en n moeten ingegeven worden door de gebruiker. Heb tot nu toe dit:

Mijn bereken knop:
Code:
 protected void bereken_Click(object sender, EventArgs e)
        {
            decimal getal1 = decimal.Parse(waarde1.Text);
            decimal getal2 = decimal.Parse(waarde2.Text);


            decimal futureValue = this.CalculateFutureValue(getal1, getal2);
            lblUitkomst.Text = futureValue.ToString();


        }

Mijn loop

Code:
private decimal CalculateFutureValue(decimal getal1,decimal getal2)
{
    decimal futureValue = 0;
            for (decimal i = 0; i >= getal2; i++)
            {
                futureValue += (futureValue + 1) * (getal1 * getal1);

               
            }
            return futureValue;

}

Mijn futureValue returned iedere keer een 0 in mijn lblUitkomst. Iemand enig idee hoe dit komt?

Alvast bedankt voor de hulp :)

Parnakra

Legacy Member
Enerzijds moet je het wiskundig inzicht hebben om te zien dat je x+x²+x³ kan schrijven als x*(1+x*(1+x))) (zoek eens op de regel van Horner).

Anderzijds moet je weten wat recursie inhoudt en hoe je het toepast.

Dan is dit een relatief simpel probleem.

Mee

Legacy Member
Je kan het moeilijk maken ja, maar eenvoudig gaat het ook:

Forluske van 0 tot n, en dan elke keer uw tussenresultaat + x^i doen:

Code:
int y = 0; //Resultaat
int x = 5; //Begin
int n = 3; 

for(int i =0; i < n; i++)
{
    y += x^i;
}

Er vanuit gaande dat je iets gemakkelijk tot de n-de macht kan verheffen natuurlijk.

edit: Math.Pow kan je gebruiken voor met exponenten te werken, maar vermits het voor school is zal het wel degelijk meer naar Parnakra's richting zijn...

Parnakra

Legacy Member
Mee zei:
Je kan het moeilijk maken ja, maar eenvoudig gaat het ook:
Als je het over efficiëntie hebt, is mijn oplossing véél beter dan wat jij voorstelt.

wartaal

Legacy Member
Hmm, ik krijg al uitkomsten, maar die zitten er telkens precies een paar getallen naast. Volgens mij maak ik nog ergens een denkfout ofzo.

Dit heb ik nu:

Code:
private decimal CalculateFutureValue(decimal getal1,decimal getal2)
{
    decimal futureValue = 0;
            for (decimal i = 0; i < getal2; i++)
            {
                futureValue += getal1*(getal1+1);

               
            }
            return futureValue;

}

Albireo

Legacy Member
recursion makes my head explode :unsure:

zonder recursie maar toch ook efficiënt omdat het gebruik maakt van het feit dat x^n = x^(n-1) * x
Code:
static decimal CalculateFutureValue(decimal x, int n) {
            decimal y = 1; // x^0==1
            decimal x1 = 1;
            for (int i = 1; i <= n; i++) {
                x1 *= x;
                y += x1;
            }
            return y;
        }

Cycloon

Legacy Member
Code:
private decimal CalculateFutureValue(decimal getal1,decimal getal2)
{
        decimal futureValue = 0;
        for (decimal i = 0; i < getal2; i++)
            futureValue = futureValue*getal1+1;
        return futureValue;
}

In de veronderstelling dat getal1 je 'x' is. (de methode die parnakra aanreikte).

Eventueel i <= getal2 gebruiken als getal2 == n is, in het geval dat getal2 je aantal termen aanduidt is alles ok.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan