Potenzfunktion mittels while- und for Schleife und rekursiv lösen



  • Du solltest die Funktion auch aufrufen:

    e = potenz(x,y);
    

    Leider ist die Ausgabe trotzdem falsch, überleg einmal, wie oft die Schleife bei

    potenz(2,3);
    

    durchlaufen wird.

    x = 2, y=3
    Du setzt e auf 2
    1. Durchlauf: i=0, i<=y
    e*=x -> 4
    2. Durchlauf: i=1 i<=y
    e*=x -> 8
    3. Durchlauf: i=2 i<=y
    e*=x -> 16
    4. Durchlauf: i=3 i<=y
    e*=x -> 32
    i>y -> Abbruch
    

    32 ist definitiv falsch für 23.



  • EOutOfResources schrieb:

    2Good4This schrieb:

    int potenz (int x, int y)
    {
        int i;
        int e=x;
        for (i=0; i<=y; i+=1)
        {
           e=e*x;
        }
        return e;
    }
    

    Der Integer x wird ja kopiert (da keine Referenz). Deshalb ist der Integer e völlig überflüssig.

    e ist das Ergebnis. Das kannst du nicht in x reinschreiben.



  • --


Anmelden zum Antworten