天天看點

算法 - 快速幂算法參考部落格簡單來說就是進行二分,底數和指數,例如 2的8次方,循環一次變成 2*2的4次方,直到幂 = 0;(注意要區分奇偶),奇數的時候假如 2的7次方 就變成6+1,把 2的一次方 先附給result即可拿一道劍指offer的例題舉例子:

參考部落格

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;

    }
}