数值的整数次方

题目描述

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

解题思路

  • xn = (x * x)n/2 n%2 = 0;
  • xn = x * (x2)n/2 n%2 = 1;

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class  {
public double Power(double base, int exponent) {
if (exponent == 0){
return 1;
}
if (exponent == 1){
return base;
}

boolean isNegative = false;
if (exponent < 0) {
exponent = -exponent;
isNegative = true;
}
double pow = Power(base * base, exponent / 2);
if (exponent % 2 != 0){
pow = pow * base;
}
return isNegative ? 1 / pow : pow;
}
}