Java解法
public class countPower {
public static double Power(double base, int exponent){
double res = 1;
int n = 1;
if (exponent > 0){
n = exponent;
} else if (exponent == 0){
return 1;
} else{
if (base == 0){
throw new RuntimeException("0 division");
}
n = -exponent;
}
for (int i = 0; i < n; i++){
res *= base;
}
return exponent >0? res: 1/res ;
}
public static double Power2(double base, int exponent){
/**
* 和第一种方法很形似,但是在求解乘法的时候使用了 右移和&
* 10^13为例 bin(13) = 1101
* 10* 10^(2^2)* 10^(2^3)
* 时间复杂度为log(n),比上面的o(n)减少了一些
*/
double res = 1;
int n = 1;
if (exponent > 0){
n = exponent;
} else if (exponent == 0){
return 1;
} else{
if (base == 0){
throw new RuntimeException("0 division");
}
n = -exponent;
}
double curr = base;
while (n != 0){
if ((n & 1) == 1){
res *= curr;
}
curr *= curr;
n = n >> 1;
}
return exponent >0? res: 1/res ;
}
public static void main(String[] args){
double res = Power2(3.14, 10);
System.out.println(res);
}
}
Python解法
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
return base ** exponent