Wie kann ich mit JavaScript Potenzen berechenen ohne Math.pow zubenutzen?
Das geht mir einfach nicht aus dem Kopf...![]()
Wie kann ich mit JavaScript Potenzen berechenen ohne Math.pow zubenutzen?
Das geht mir einfach nicht aus dem Kopf...![]()
Bei posivitven Potenzen kannst du ein for Schleife nehmen oder ein rekursive Funktion.
Das wäre das ganze in beispielhaft in Java.Code:package potenz; public class Main { public static void main(String[] args) { int basis=5, exponent=5; System.out.println("Potenz von 5 bei Exponenten 5:"); System.out.println(potenz(basis,exponent)); } public static int potenz(int basis,int exponent){ if (exponent > 1){ return potenz(basis,exponent-1)*basis; } else{ return basis; } } }
Vielen vielen Dank. Das hätte ich alleine nicht hingekriegt. Ich hab zwar ähnliche Sachen im I-Net gefunden, aber doch nicht so ganz zum laufen gekriegt. Also vielen Dank.![]()
Wo möglich, ist aber eine Schleife gegenüber einer rekursiven Funktion zu bevorzugen :-)
Wer sagt sowas?
Ich mag rekursive Funktionen.
Ich stimme Irian da zu.
Rekursive Funktionen können ja auch schön sein, meist sind sie ganz einfach und schnell geschrieben, das macht einen gewissen Reiz daran aus. Aber versuche mal, z.B. die 100. Fibonacci-Zahl rekursiv und dann vergleichsweise über eine Schleife zu berechnen. Bei der rekursiven Variante ist die Laufzeit nicht mehr lustig. Nicht jede rekursive Funktion muss unbedingt langsamer sein als ihre iterative Entsprechung, und bei wenigen Rekursionsschritten kann man das im Allgemeinen auch vernachlässigen, aber bei großen Werten, die auch mehr Rekursionsschritte mit sich bringen, sollte man iterative Lösungen den rekursiven Lösungen vorziehen.
Doch nun zurück zur Potenzrechnung ohne entsprechende Potenzfunktion. Das obige Beispiel von dir könnte man noch ein wenig erweitern, indem man auch negative Exponenten und reelle Basen erlaubt. Hier mal ein Beispiel in (Object) Pascal:
Code:function Potenz(basis: real; exponent: Integer): real; var i: Integer; begin if exponent=0 then Result:= 1 else if exponent<0 then Result:= 1.0/Potenz(basis, -exponent) else begin Result:= basis; for i:=2 to exponent do Result:= Result*basis; end; end;
-Have you got anything without spam in it?-
Almalexia sieht und hört gar nichts mehr.
[Bild: Morrowknuff.gif][Bild: woebutton.jpg][Bild: 88x31gruen.jpg] [Bild: Morrowknuff.gif]
~ Morrowind-Hilfe ~ Morrowind-Plugins ~ Neverwinter Nights-Hilfe ~
~ More than cleverness we need kindness. ~
Why did Newton not invent group theory? - Because he wasn't Abel.
"After all, the mark of the truly great was not merely having power, but knowing how and when to use it."
Fibonacci wurde ja schon angesprochen, da gehört offensichtlichste Lösung (Rekursion) zu den schlechtesten, die man sich vorstellen kann - allerdings würde ich bei Fibonacci auch auf ne Schleife verzichten, sondern die Methode mit konstanter Laufzeit wählen :-)
Man sollte auch nicht vergessen, dass jeder Funktionsaufruf einen gewissen Overhead hat, d.h. wenn man die gleiche Funktion ein dutzend Mal aufruft, kommt da schon was zusammen. Es gibt sicherlich Algorithmen, die durch Rekursion sehr gut funktionieren - aber imho zählt die Potenz da nicht dazu, da reicht ne Schleife.
Schleifen brauchen auch Variablen.
Klar, das es etwas Overhead gibt, aber im kleinen Rahmen und bei heutigen Rechner, denke ich, dass man das vernachlässigen kann. Und das man bei größeren Sachen eher Schleifen verwenden sollte, ist auch ok.
Aber die Verallgemeinerung stört mich etwas.
[Bild: gg_schuetzen_ani.gif] | ~ DauJones ~ | ~ Klopfers-Web ~ | ~ German Bash ~ |
Die meisten und schlimmsten Übel, die der Mensch dem Menschen zugefügt hat, entsprangen dem felsenfesten Glauben an die Richtigkeit falscher Überzeugungen.
Bertrand Russell
Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat. anonym
Mir ist bewusst um was es geht, aber es hat halt beides Vor und Nachteile.
Welchen Vorteil hat in diesem speziellen Fall die Rekursion?
Niemand bezweifelt, dass es durchaus Fälle gibt, wo Rekursion Sinn macht, aber imho heißt das nicht, dass man sie immer anwenden sollte - weil es mind. genau so viele (wenn nicht gar mehr) Fälle gibt, wo Rekursion bestenfalls suboptimal ist :-)