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 Integere
völlig überflüssig.e
ist das Ergebnis. Das kannst du nicht in x reinschreiben.
-
--