美文网首页
数值的整数次方

数值的整数次方

作者: 打工这件小事 | 来源:发表于2018-11-29 14:49 被阅读0次

《剑指offer》面试题16:数值的整数次方

题目:实现函数double Power(double base,int exponent),求base的exponent次方。不能使用库函数,同时不需要考虑大数问题。

即全面又高效的解法:
当exponent为偶数时,例如exponent=32,如果我们已经知道了base的16次方,那么只需要在16次方的基础上再平方一次即可。而16次方是在8次方的基础上再平方一次...以此类推,求32次方只需要5次乘法:先求平方,在平方的基础上求4次方,在4次方的基础上求8次方,在8次方的基础上求16次方,在16次方的基础上求32次方。
当exponent为奇数时,例如exponent=33,如果我们已经知道了base的32次方,那么只需要在32次方的基础上再乘以base即可。而32次方是偶数的计算方法。

代码如下:

public static double Power(double base,int exponent) {
    // 对0求倒数不合法
    if (base == 0 && exponent < 0) {
        throw new RuntimeException("input invalid");
    }
    // 0的0次方在数学上无意义
    if (base == 0 && exponent == 0) {
        return 0;
    }
    int absExponent = exponent < 0 ? -exponent : exponent;
    double result = PowerCore(base,absExponent);
    return exponent < 0 ? 1.0 / result : result;
}

private static double PowerCore(double base,int exponent) {
    if (exponent == 0) {
        return 1;
    }
    if (exponent == 1) {
        return base;
    }
    // 右移运算符代替除以2
    double result = PowerCore(base,exponent >> 1);
    result *= result;
    // 位与运算符判断奇数
    if (exponent & 1 == 1) {
        result = result * base;
    }
    return result;
}

相关文章

  • 《剑指 Offer (第 2 版)》第 16 题:数值的整数次方

    第 16 题:数值的整数次方(快速幂) 传送门:AcWing:数值的整数次方,牛客网 online judge 地...

  • 剑指offer(十二)数值的整数次方

    数值的整数次方 是为了考察代码完整性点击进入 牛客网题库:数值的整数次方 题目描述:给定一个double类型的浮点...

  • 数值的整数次方

    题目描述: 解析一: 初看,就是求一个 double类型的数值的n次方,用代码来写就是n次数值相乘。但是,这道题的...

  • 数值的整数次方

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

  • 数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent...

  • 数值的整数次方

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

  • 数值的整数次方

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

  • 数值的整数次方

    《剑指offer》面试题16:数值的整数次方 题目:实现函数double Power(double base,in...

  • 数值的整数次方

    ?环境:牛客的编译环境?语言:JavaScript☕️难点:没有考虑到底数为0,指数为负数和正数的不同情况。?题目...

  • 数值的整数次方

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

网友评论

      本文标题:数值的整数次方

      本文链接:https://www.haomeiwen.com/subject/jeffcqtx.html