美文网首页剑指offer
数值的正数次方

数值的正数次方

作者: G_uest | 来源:发表于2019-08-09 20:19 被阅读0次

题目来源:牛客网--数值的正数次方

题目描述

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

解题思路

第一次我使用的是 Math.pow() ,看了评论区决定使用快速幂二刷。

记录一下使用快速幂的题解,关于快速幂,建议百度一下。
这里说一下几种情况:

  1. 底数为 0,指数为负。因为分母不能为 0 ,异常结束。
  2. 底数为 0,指数非负。结果为 0。
  3. 底数非 0,指数为正,正常使用快速幂进行运算。
  4. 底数非 0,指数为负,先把指数变成正数,因为这样就不用考虑移位时符号位的问题,最终结果做一下倒数运算就好了( 1/result)。
  5. 底数非 0,指数为 0,结果为 1。

java代码

public class NumericalIntegerPower {
    public static void main(String[] args) {
        System.out.println(poewr(0, -2));
    }

    static double poewr (double base, int exponent) {
        double result = 1;
        int n;
        // 分母为 0 ,抛出异常。
        if (base ==0 && exponent < 0) {
            throw new ArithmeticException();
        }
        // 0 的任何次幂都为 0
        if (base == 0) {
            return 0;
        }
        // 一个数的 正数 次幂
        if (exponent > 0){
            n = exponent;
        } else if(exponent < 0) { // 一个数的 负数 次幂
            // 先按正数次幂算,这样移位时就不用考虑符号问题。最后 1/result 就好了
            n = -exponent;
        } else { // 一个数的零次幂
            return 1;
        }
        // 快速幂 运算
        while (n != 0) {
            if ((n & 1) != 0) {
                result *= base;
            }
            base *= base;
            n >>= 1;
        }
        return exponent > 0 ? result : 1/result;
    }
}

相关文章

  • 数值的正数次方

    题目来源:牛客网--数值的正数次方 题目描述 给定一个double类型的浮点数base和int类型的整数expon...

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

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

  • 数值的整次方

    只提供思路,代码无法执行 题目:实现函数double Power(double base,int exponent...

  • 剑指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...

网友评论

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

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