Schnelles Potenzieren

Vanessa_X

Neues Mitglied
Abend zusammen!

Ich habe folgendes Problem: Ich soll eine Java-Datei erstellen, die schnell potenziert, und das ganze allerdings ohne Math-Methode.

ich hab den folgenden Beitrag dazu schon gefunden: http://www.java-forum.org/java-basics-anfaenger-themen/84284-potenzen-ohne-math-pow.html

nur leider kann ich das in meinen Rahmen nicht einbringen..

das Mathematische mit dem Schnellen Potenzieren ist mir schon klar, aber wie sag ich Java jetzt, was ich möchte? :(

Vielen Dank im Voraus!
Vanessa
 
S

SlaterB

Gast
bevor du Java was sagen kannst musst du es auf Papier ausrechnen und in Worten beschreiben können
(und nicht 'ich rechne 5^7' sondern wirklich Schritt für Schritt)

ein anderer gerade aktueller Link ist noch
http://www.java-forum.org/hausaufgaben/108915-probleme-shift-operatoren.html
das Programm dort ist vielleicht nicht besonders toll, der Link zu Wikipedia ist aber brauchbar und halbwegs ist dieses Verfahren umgesetzt,
die Programme in deinem Link sind besser,
schreib sie ab, stell Fragen dazu, was auch immer, aber nur 'ich versteh nix', so gehts kaum voran

> nur leider kann ich das in meinen Rahmen nicht einbringen..

inwiefern, wie definiert sich dein Rahmen?
 

Vanessa_X

Neues Mitglied
ich bin Java-Anfängerin - die Basics sind eigentlich vorhanden, nur das Umsetzen macht mir Probleme.
Ich würde total gerne eine "richtige" Frage stellen, aber im Moment weiß ich noch nicht wie ich anfangen soll.

Java:
  public static long potenziere(int x, int n, int k) {
    long result = x;
      
    
    
      
    return result;

soweit bin ich bis jetzt. Die Main-Methode habe ich auch schon. (n ist übrigens mein Exponent)
ich hatte auch schon die Idee, eine Fakultät bei n einzubauen.
und ich möchte Boolesche und Shift-Operatoren mit einfügen.
ich weiß, ich weiß, meine "Fragestellung" ist nicht gerade antwortfreundlich, aber ich weiß nicht, wie ichs direkter formulieren könnte. Mir fehlt einfach der Anfangsstupser.
 
S

SlaterB

Gast
wie kommst du denn auf die Parameter
> int x, int n, int k
ist das vom 'Probleme mit den Shift-Operatoren'-Link?
dann kopiere das Programm von dort oder idealerweise das von Posting-Direkt-Link
http://www.java-forum.org/java-basics-anfaenger-themen/84284-potenzen-ohne-math-pow.html#post583089
wenn dir Rekursion nicht gefällt kann man das auch in eine Schleife umändern,

wieso der jeweilige Code so geschrieben ist wie er ist, kann nun wirklich kaum jemand erklären,
erkläre mal einen Kind wie man ein Haus auf einer Wiese malt..,
einfach machen (wochenlang ausprobieren) oder sein lassen,
als Anfänger ist 'Schnellen Potenzieren' auch nicht das leichteste Thema, wahrscheinlich sind vorher andere Aufgaben besser
(wieder Vergleich mit Zeichnen: nur einen Kreis oder einen Strich malen)
 
Zuletzt bearbeitet von einem Moderator:

KYL3R

Mitglied
Was passt an :
Java:
public static double pow(double d, int i) {
    double v = d;
    for (int j = 1; j < i; j++) {
        v *= d;
    }
    return v;
}
nicht in deinen Rahmen ? Das ist eine simple for-schleife (grundlegene programmierung) die anstatt beispielsweise 7^3 einfach 7*7*7 rechnen, genau das, was eben potenzieren ist.
Das wollte ich gerade posten, aber ein Blick in den thread zeigte, dass es das bereits gibt.
 

mabuhay

Bekanntes Mitglied
Hallo

Brauchst du das denn einfach als Übung oder solls wirklich möglichst schnell sein? Wenn zweiteres zutriffst musst du erst mal (nachdem du ein wenig Java mit diversen operationen und schleifen etc geübt und getestet hast) recherchieren welche Operationen welchen in punkto Geschwindigkeit vorzuziehen sind... und dann irgendwelche benchmarks durchführen und mit der Math.pow() vergleichen.

mfg
 

Andi_CH

Top Contributor
ich bin Java-Anfängerin - die Basics sind eigentlich vorhanden, nur das Umsetzen macht mir Probleme.
Ich würde total gerne eine "richtige" Frage stellen, aber im Moment weiß ich noch nicht wie ich anfangen soll.

Java:
  public static long potenziere(int x, int n, int k) {
    long result = x;
      
    
    
      
    return result;

soweit bin ich bis jetzt. Die Main-Methode habe ich auch schon. (n ist übrigens mein Exponent)
ich hatte auch schon die Idee, eine Fakultät bei n einzubauen.
und ich möchte Boolesche und Shift-Operatoren mit einfügen.
ich weiß, ich weiß, meine "Fragestellung" ist nicht gerade antwortfreundlich, aber ich weiß nicht, wie ichs direkter formulieren könnte. Mir fehlt einfach der Anfangsstupser.

Dann sag ihm auch Exponent (Einbuchstabenvariablen sind ein Tabuthema (ok, ausser in for - schleifen)

Was soll der dritte Parameter?

Java:
  public static long potenziere(int x, int exponent, int k) {
    long result = x;
      
    return result;
 
C

cRacKheAd

Gast
man könnte die variablen auch so nennen: x = basis, n = exponent, k = gueltigeZiffernExponentBinary
halte ich für vercrackt...

Java:
public static long potenziere(int x, int n, int k) {
    long result = x;  
	int _x = 1;
      for (int i =0; i<=k;i++){
	
	if (i-te Stelle von n == 1){_x = _x * _x * x; result = _x;}
	else {_x = _x * _x; result = _x;}
	}
      
    return result;   
  }

jetzt ist nur noch die Frage, wie du rauskriegst, ob die i-te Stelle von n in binär ne 1 oder ne 0 ist...
 

mabuhay

Bekanntes Mitglied
jetzt ist nur noch die Frage, wie du rauskriegst, ob die i-te Stelle von n in binär ne 1 oder ne 0 ist...

Mit binären Operationen (and/or/shift)
Also z.B. Test auf 5. Bit: Mit and-Operator alle anderen Bits mit Maskieren auf 0 setzen, und dann Test ob Resultat = 16 ist. Oder dann noch um 4 Bit nach rechts schieben und testen ob Resultat = 1 ist.

mfg
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben