Minimum von beliebig vielen double Werten

Es gab weiter oben im Thread explizit einen Post, der die Frage der Methodengestaltung genau in die Richtung lenkt. Ich denk nicht, dass in diesem Fall ein if mehr den Code überkomplex macht. :)

Gruß
Ollie
 
Hallo,

Es gab weiter oben im Thread explizit einen Post, der die Frage der Methodengestaltung genau in die Richtung lenkt. Ich denk nicht, dass in diesem Fall ein if mehr den Code überkomplex macht. :)
ja das stimmt, da wurde auf null geprüft.

Das war ja auch nur ein Beispiel. In diesem Fall macht das den Braten nicht fett, aber allen größeren komplexeren Beispielen schon.

Das soll jetzt nicht so klingen als wollte ich mich rausreden ;-) Also bitte nicht falsch verstehen. Aus Zeitgründen liefere ich ab und an schon mal die minimal Version einer Problemlösung hier ab.
Aber wir sind ja so ein tolles Forum die diese minimal Lösung in 0,nix in ein vollwertiges Stück production ready code transformiert. In diesem Sinne weiter so. ;-)

Ich werde aber auch in Zukunft eher code in dieser Form:
Java:
private double approximateSquareRoot(double n, double tolerance)
{
    double root = n / 2;
    while (abs(root - (n / root)) > tolerance)
    {
        root = 0.5 * (root + (n / root));
    }
    return root;
}

anstatt:
Java:
/**
     * Approximate the square root using the Newton-Rhapson Method
     * 
     * @param n
     *            the number to get the square root of
     * @param tolerance
     *            max distance between square root estimates
     * @throws InvalidArgumentException
     *             thrown if edge cases are passed that cannot be approximated
     */
    private double approximateSquareRoot(double n, double tolerance) throws IllegalArgumentException {
        if (n == Double.NaN) {
            throw new IllegalArgumentException(
                    "Cant approximate square root of Double.NaN");
        }
        if (n == Double.NEGATIVE_INFINITY || n == Double.POSITIVE_INFINITY) {
            throw new IllegalArgumentException(
                    "Cant approximate square root of Infinity");
        }
        if (n == 0) {
            return 0;
        }
        double root = n / 2;
        while (Math.abs(root - (n / root)) > tolerance) {
            root = 0.5 * (root + (n / root));
        }
        return root;
    }

hier posten... Man möge mir verzeihen ;-)

Gruß Tom
 
Zurück