快速幂解法--x^n

时间:2020-05-28
本文章向大家介绍快速幂解法--x^n,主要包括快速幂解法--x^n使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 1 class Solution{
 2 public:
 3     double myPow(double x,int n){
 4           if(1==x || n==0)   return 1;
 5           if(n == 1)   return x;
 6           if (n < 0) {
 7               n = -n;
 8               x = 1/x;
 9           }
10 
11           int res = 1;
12           while(n){
13               if(n&1)  res *= x;
14               x *= x;
15               n >>= 1;
16                 }   
17 
18            return res;  
19      }
20 };

结果值 result 初始为 1
base 初始为 3,此时 exponent 的二进制最右位为 1,更新结果为:base * result
exponent 右移一位。base 进行累乘,base 更新为 3 的 2 次方。由于 exponent 的二进制最右位为 0,不更新结果
exponent 右移一位。base 进行累乘,base 更新为 3 的 4 次方。此时 exponent 的二进制最右位为 1,更新结果为:base * result
结束

作者:xin-tan
链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solution/tu-jie-tu-xie-zheng-li-3chong-jie-fa-bif-er-fen-fa/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/pengtangtang/p/12980222.html