题解 | #数值的整数次方#

数值的整数次方

https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00

数值的整数次方:最直观的想法是,求a的b次方,使用for循环直接循环b次。更快求数值的整数次方的方法是快速幂,其基本思想是:如果b是偶数,那么ab就分为ab/2×ab/2;如果b是奇数,那么ab就分为ab-1×a。举一个通俗易懂的例子,比如求55,则55=54×5,54=52×52,52=51×51。如果使用计算机来实现的话,可以使用二进制来判断,当指数大于0时进入循环,首先判断指数的最后一位是否为1,如果是则将其乘入结果,同时每次循环中还需要对底数进行自乘并将指数右移一位,为下次循环做准备。

double Power(double base, int exponent) 
{
    double result=1;
    bool flag=exponent>0?true:false;
    exponent=abs(exponent);
    while(exponent>0)
    {
       if(exponent&1) //二进制最后一位是1
          result*=base;
       base*=base;
       exponent>>=1;
    }
    return flag==true?result:1.0/result;;
}

#数值的整数次方#
剑指offer 文章被收录于专栏

剑指offer专栏主要分享剑指offer题解。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务