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

题目

实现函数 double Power(double base, int exponent),求base的exponent次方。

注意:

1.保证base和exponent不同时为0。

2.不得使用库函数,同时不需要考虑大数问题

3.有特殊判题,不用考虑小数点后面0的位数。

数据范围:∣base∣≤100  ,∣exponent∣≤100  ,保证最终结果一定满足∣val∣≤10^4 
进阶:空间复杂度 O(1)  ,时间复杂度 O(n) 

示例1

输入:2.00000,3

返回值:8.00000

示例2

输入:2.10000,3

返回值:9.26100

示例3

输入:2.00000,-2

返回值:0.25000

说明:2的-2次方等于1/4=0.25

解答

源代码

import java.util.*;
public class Solution {
    public double Power(double base, int exponent) {
        if (exponent == 0) {
            return 1;
        }

        int sign = 1;
        int num = exponent;

        if (exponent < 0) {
            sign = -1;
            num = 0-exponent;
        }

        double res = 1;
        while (num-- > 0) {
            res *= base;
        }

        if (sign == -1) {
            return (double)1 / res;
        }

        return res;
  }
}

总结

按照指数大小将底数相乘,如果是负数就按照指数的绝对值,得到结果后用1除以结果。

注意该用double的地方就用double,否则会导致结果取整。

你可能感兴趣的:(剑指Offer,算法,java)