參考博客
https://blog.csdn.net/qq_19782019/article/details/85621386
簡單來說就是進行二分,底數和指數,例如 2的8次方,循環一次變成 2*2的4次方,直到冪 = 0;(注意要區分奇偶),奇數的時候假如 2的7次方 就變成6+1,把 2的一次方 先附給result即可
拿一道劍指offer的例題舉例子:
題目描述
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
保證base和exponent不同時爲0
public class Solution {
public static double Power(double base, int exponent) {
double result = 1.0;
int exponentN = exponent < 0 ? - exponent : exponent; //把冪取絕對值,如果冪是負數就輸出1/result
while(exponentN > 0){
if((exponentN & 1) == 1){
result = result * base; //把減去的一個base賦給結果,相乘
}
exponentN /= 2;
base *= base;
}
return exponent < 0 ? 1/result : result;
}
}