JavaScript——数值的整数次方(快速幂算法实现)

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

function Power(base, exponent)
{
    // write code here
    //方法一:调用幂函数
    //return Math.pow(base,exponent);
    
    //方法二:效率优化
    //连乘时间复杂度O(n)
    //当指数exponent很大时,选择快速幂算法,时间复杂度O(logn)
    //例如:2^13;指数13=1101(二进制数表示)
    var isGZero=true;//对指数进行判断,决定返回结果是res,还是res的倒数
    var res=1;
    if(exponent==0)
        return 1;//任何数的0次幂都为1
    if(exponent<0){
        exponent=-exponent;//指数设置为正的
        isGZero=false;
    }
    while(exponent>0){
        if(exponent&1==1){//从指数二进制表示的低位开始计算;可以减少连乘次数
            res*=base;
        }
        base*=base;
        exponent>>=1;
    }
    return isGZero?res:(1/res);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值