剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方

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

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    public double myPow(double x, int n) {
        long N = n;

        if(n < 0){    // 如果一个数事负数次方,那就变成倒数的(负数绝对值)次方
            x  = 1/x;
            N = N*(-1);
        } 

        double res = 1;
        ////如果N是最小 2的倍数,那就直接乘以x,如果不是,那就不用乘了,因为一个数字的1次方还是它本身
        while(N > 0){
            if(N % 2 == 1){      
                res = res * x;
            }
            x = x*x;
            N = N/2;
        }

        return res;
        
    }
}
posted @ 2020-12-31 09:51  xiaoff  阅读(58)  评论(0编辑  收藏  举报