核となるアイデアは
nが偶数の場合、a^n = a^n/2 × a^n/2
nが奇数の場合、 a^n = a^(n-1)/2 × a^(n-1)/2 × a
コードは次のとおりです。
次のようにコードをコピーします。
パブリック クラス Power {
public static void main(String[] args) {
System.out.println(power(5.5,5));
}
private static double power(double base, int exponent) {
if (指数 == 0)
1を返します。
if (指数 == 1)
リターンベース。
double 結果 = べき乗(基数、指数 >> 1);
結果 *= 結果;
if ((指数 & 0x1) == 1)
結果 *= ベース;
結果を返します。
}
}
また、このコードでは、右シフト演算を使用して 2 による除算を置き換え、ビット単位の AND 演算を使用して剰余を置き換えてパリティを決定するため、アルゴリズムの効率が大幅に向上します。