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

数值的整数次方

作者: 6默默Welsh | 来源:发表于2018-03-22 18:23 被阅读7次

    描述

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

    注意

    本题要比快速幂复杂很多,底数是浮点数和是整数倒并没有区别,但指数要考虑负数情况,且本题指数并不是无符号位(无符号位可以直接通过右移1位的方式来实现除以2的功能)有符号位会出问题,所以要先变成正数,最后判别下指数正负即可

    代码

    public class Solution {
        public double Power(double base, int exponent) {
            if (exponent == 0) {
                return 1;
            }
            if (exponent == 1) {
                return base;
            }
            boolean sign = true;
            if (exponent < 0) {
                sign = false;
                exponent *= -1; 
            }
            
            double result1 = Power(base, exponent >>> 1);
            double result2 = result1 * result1;
            if ((exponent & 0x1) == 1) {
                result2 *= base;
            } 
            
            if (sign) {
                return result2;
            } else {
                return 1/result2;
            }
        } 
    }
    

    相关文章

      网友评论

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

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