Mit dieser Formel kann eine beliebige n-Wurzel aus einer beliebigen Zahl gezogen werden, ohne die Math-Funktion SQRT und ohne Schleife (bei Wurzel ziehen .. Basis-Methode).
Mit der zweiten Funktion wird potenziert, ebenfalls ohne Math-Funktion POW.
// Berechnet die Wurzel (Basis-Wert)
public static double Basis(double num, double Potenz)
{
return Pow(num, 1 / Potenz);
}
// Potenziert eine Basis-Zahl um eine beliebige Potenz
public static double Pow(double basis, double exp)
{
// val = Ergebnis (Erste = 1)
// r = Gesamtschritt, beginne beim ersten (Erste = Schritt 1)
// step = Schrittweite
// step ist der kleinere Wert zwischen 0 und 1 (Immer zw. 0 und 1)
// Initialisierung der Variablen
double
val = 1,
r = 0,
step = ((exp - r) < 1 ? (exp - r) : (1));
// den nächsten Schritt machen
r += step;
// Solange die Potenz nicht erreicht ist rechne weiter
while (r <= exp)
{
// multipliziere das Ergebnis mit diesem Schrittwert zur Basis
val *= step * basis;
// Berechne die nächste Schrittweite (kleinerer Wert zwischen 0 und 1)
step = exp - r < 1 ? exp - r : r;
// Wenn der Potenzwert erreicht ist, beende die Berechnung, keine weiteren Schritte nötig
if (step == 0) break;
// Schritt machen
r += step;
}
// Gib das Ergebnis zurück
return val;
}
3 Kommentare zum Snippet