zoukankan      html  css  js  c++  java
  • 快速幂解法--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)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    串口基本知识
    20180826
    20180819
    自动化测试
    说话有重点 测试思维
    学习C语言,在软件测试中如何用?
    PC能替代服务器吗?
    服务器与普通电脑的区别?
    k8s 回滚应用
    k8s Service
  • 原文地址:https://www.cnblogs.com/pengtangtang/p/12980222.html
Copyright © 2011-2022 走看看