001 package de.hska.java.aufgaben.suchen;
002
003 /**
004 * Zur Berechnung der Potenz <code>a<sup>n</sup></code>
005 * für natürliche Zahlen <code>n</code> und
006 * Gleitkommawerte <code>a</code>.
007 *
008 * <p>
009 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/suchen.html#potenz">Zurück zum Aufgabentext</a>
010 * </p>
011 *
012 *
013 * @author Christian Pape
014 *
015 */
016 public class Potenzfunktion {
017
018 /**
019 * Gibt <code>a<sup>n</sup></code> zurück.
020 * Die Laufzeit ist <code>O(log<sub>2</sub>n)</code>.
021 * Rekusive Variante.
022 *
023 * @param a die zu potenzierende Zahl
024 * @param n eine ganze Zahl grösser gleich 0
025 */
026 public double getPotenz(double a, int n) {
027 if (n == 0) {
028 return 1.0;
029 } else {
030 double potenz = getPotenz(a, n / 2);
031
032 if (n % 2 == 0) {
033 return potenz * potenz;
034 } else {
035 return a * potenz * potenz;
036 }
037 }
038 }
039
040
041 }