数值的整数次方

题目:

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

解答:

 1 public class Solution {
 2     public static void main(String[] args) {
 3         double base = 2.1;
 4         int exponent = 2;
 5         System.out.println(power(base, exponent));
 6     }
 7 
 8     public static double power(double base, int exponent) {
 9         if(equal(base, 0.0) && exponent < 0) {
10             return 0.0;
11         }
12 
13         // 指数的绝对值
14         int absExponent = Math.abs(exponent);
15         double result = powerWithExponent(base, absExponent);
16 
17         if(exponent < 0) {
18             result = 1.0 / result;
19         }
20 
21         return result;
22     }
23 
24 
25     private static double powerWithExponent(double base, int exponent) {
26         if(exponent == 0) {
27             return 1.0;
28         }
29 
30         if(exponent == 1) {
31             return base;
32         }
33 
34         double result = powerWithExponent(base, exponent>>1);
35         result = result*result;
36         if(exponent & 0x01 == 1) {
37             result = result*base;
38         }
39 
40         return result;
41     }
42 
43     // important here
44     private static boolean equal(double num1, double num2) {
45         if((num1 - num2) > -0.0000001 && (num1 - num2) < 0.0000001) {
46             return true;
47         } else {
48             return false;
49         }
50     }
51 }

原文地址:https://www.cnblogs.com/wylwyl/p/10477102.html