zoukankan      html  css  js  c++  java
  • 《剑指offer》— JavaScript(12)数值的整数次方

    数值的整数次方

    题目描述

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


    思路一

    1. 考察指数的正负以及底数是否为零的几种情形;
    2. 将指数转换为二进制形式,比如13=1101;
    3. 例如求解1013次方,可转换为(100001)*(100100)*(101000);
    4. 通过&1(按位与)和>>1(右移1)运算逐位读取1101,为1时将该位代表的乘数累乘到最终结果。

    实现代码

    function Power(base, exponent)
    {
        var res = 1,
            curr = base,
            n;
        if (exponent > 0) {
            n = exponent;
        } else if (exponent < 0) {
            if (base === 0)
                throw new Error("分母不能为0");
            n = -exponent;
        } else {
            return 1;
        }
        while (n !== 0) {
            if ((n & 1) == 1) {
                res *= curr;
            }
            curr *= curr; // 翻倍
            n >>= 1; // 右移一位
        }
        return exponent >= 0 ? res : (1 / res);
    }
    

    举例

    Power(10,13):
    图片.png
    Power(11,-13):

    图片.png
    Power(0,-3):

    图片.jpg

  • 相关阅读:
    Oracle性能调整ASH,AWR,ADDM
    子网掩码、子网划分详解
    10046事件sql_trace跟踪
    find详解
    date详解
    touch详解
    [转]lsof详解
    iftop、ifstat详解
    iotop详解
    关于Unity的入门游戏飞机大战的开发(上)
  • 原文地址:https://www.cnblogs.com/echovic/p/6430670.html
Copyright © 2011-2022 走看看