算法 - 快速冪算法

參考博客

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;

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章