Hey, ich habe jetzt nach einer Stunde google und 20 Minuten Forensuche immernoch nicht herausfinden können, wie man ohne Math.pow oder ohne pow potenzieren kann.
Unser Lehrer sagt, wir sollen die Datei zur Berechnung von Zweierpotenzen OHNE pow schreiben.
Ich denke mal, ich bin einfach schlicht und ergreifend zu dumm dafür.
Ich probier hier rum und niemals kommt was ordentliches raus.
Ich hab via Forensuche das hier gefunden, aber das verstehe ich erstens nicht und zweitens ist ja auch pow drin.
Jetzt meine einfache Frage .. wie geht das mit dem Potenzieren ohne pow und für extra Dumme ???:L
Danke schonmal
EDIT:
Hier ist mal meine aktuelle Datei mit Math.pow ..
Java:
publicclassZweierPotenzenUnendlich//23:09Uhr, 29.09.2010 by Jats - (UN)ENDLICH oO{publicstaticvoidmain(String[] args){System.out.println("Hallo Benutzer (:");long a =(long)2;long b =(long)0;for(long i =(long) a; i >=b; i++){long c =(long)Math.pow(a,i);System.out.println(a +"^"+ i +"="+ c);}}}
Ich weiss ja nicht, wie man heute das Potenzieren lernt, ich hab das damals in der Schule gelernt, nicht durch google --> brain --> on, google --> off ;-)
Potenzieren ist ja nichts anderes nichts anderes als wiederholtes Multiplizieren - zumindest bei ganzzahligen Exponenten.
Rekursion ist dafür ganz schön, für Anfänger sollten aber auch einfache Schleifen ausreichen.
Ich kenne den Begriff "Rekursion" jetzt halt nur von ein paar Suchergebnissen und deshalb kann ich damit nicht viel anfangen.
Ich probier das mal .. und @ Michael... jaa, ich weiß zwar, wie man potenziert, aber wenn ich das hier bei Java in einer Schleife probiere kommt nur Scheiß raus -.-
int base =2;int exponent =...//was auch immer gewünscht istint result =1;for(int i=0; i<exponent; i++){// Hier die Variablen multiplizieren und das Ergebnis in der richtigen Variable zwischenspeichern}
welche rekursive denn, die von Der Müde Joe?
das würde ich nicht empfehlen -> StackOverflowError
schon mit Ganzzahlen sind die double-Parameter und das Rechnen /2 usw. gefährlich,
wenn da irgendwann mal x.99999968 rauskommt wird der Vergleich == 0 nie erfüllt sein
Das funktioniert nicht. Dafür könnte man z.B. den natürlichen Logarithmus und die Exponentialfunktion (e^x) über Reihen definieren, und dann die Identität a^b = e^(b*ln(a)) verwenden.
Das Berechnen von Potenzen mit rationalem Exponenten ist nicht ganz trivial.
Aber wenn hier jemand eine reine Java Lösung ohne Verwendung von Math.* und StrictMath.* präsentiert, wäre ich sehr interessiert. Ob per Schleife oder Rekursion bleibt dabei freigestellt ;-)
Darf man eigentlich die Wurzel mit sqrt ziehen, oder ist es auch untersagt?
Wenn es aber auch ein Tabu ist, dann Heron-Verfahren anwenden.
Also mit den zwei Verfahren ist dann sowas möglich:
zahl ^5,5 = zahl ^(55/10) =>
Man kann die Zahl mit sich selbst 55 mal multiplizieren und dann durch "Heron-Verfahren" eine Wurzel ziehen.
P.S.- vielleicht geht es auch einfacher, davon habe ich aber keine Ahnung.
P.P.S.- vielleicht müsst ihr gar nicht mit rationalen Exponenten arbeiten. Dann wird ja alles viel einfacher:
Java:
publicclassPotenz{publicstaticdoublepotenz(int number,int potenz){double n =1;//double: IN- Potenzen, IR-Zahlenfor(int start =1; start <= potenz; potenz--)
n *= number;return n;}publicstaticvoidmain(String arg[]){System.out.println(potenz(3,3));}}
I. integer Exponent grösser gleich Null.
II. Exponent kleiner gleich Null.
powerOf2
I. // Diesen Teil mit ganzzahligen positiven Exponenten habe ich aber Teil II. mit negativen ist schwer..
Schreiben Sie eine Klasse Power mit einer Methode powerOf2, die einen ganzzahligen Parameter e entgegen nimmt. Falls e < 0 ist, geben Sie “FEHLER” auf der Konsole aus, sonst berechnen Sie 2e mit Hilfe eines geeigneten Schleifenkonstrukts und geben das Ergebnis ebenfalls auf der Konsole aus.
II. // Dieser Teil ist mein Problem. Möchte es wie in Teil I machen nur mit negativen ganzzahligen Exponenten.
Ändern Sie Ihr Programm so, dass es auch für e <= 0 sinnvolle Ergebnisse
ausgibt. // Also negative ganze Zahlen als Exponent
Java:
publicclassPower{int potenz =1;int e ;int i ;publicvoid setE (int getE){
e = getE;// Usereingabe getE wird an e übergeben. e ist unser Exponent zur Basis 2.}publicvoid powerOf2 (){if(e >0)// 2er Potenz für positive ganzzahlige Exponenten I. Teilaufgabefor(i=1; i<=e; i++){
potenz = potenz *2;}else// 2er Potenz für e ganzzahlige negative Exponenten. II. Teilaufgabefor(i=-1; i>=e; i++){
potenz = potenz *(1/2);}System.out.println ("2 hoch "+ e +" beträgt: "+ potenz);}}