JZ12 — 数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0

题目分析

快速幂,不再赘述。
参考:http://www.guanhaobo.cn/?p=688
需要注意,如果exponent为负数,需要将它转为正数,最后结果是1 / ans

C++

class Solution
{
public:
    double Power(double base, int exponent)
    {
        if (base == 0)
            return 0;
        int flag = exponent < 0 ? 1 : 0; //exponent是否为负数
        exponent = abs(exponent);
        double ans = 1;
        while (exponent)
        {
            if (exponent & 1)
                ans *= base;
            base *= base;
            exponent >>= 1;
        }
        return flag ? 1 / ans : ans;
    }
};

Java

public class Solution {
    public double Power(double base, int exponent) {
        if (base == 0)
            return 0;
        boolean flag = exponent < 0;
        exponent = Math.abs(exponent);
        double ans = 1;
        while (exponent > 0) {
            if ((exponent & 1) == 1)
                ans *= base;
            base *= base;
            exponent >>= 1;
        }
        return flag ? 1 / ans : ans;
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部