leetcode no 50 pow(x, n)

1. 题目

Implement pow(x, n).

2. 思路

可以根据n的取值正负以及0来分别处理。再求x的n次方时,为了快速接近n显然需要成倍的相乘(换个思路就是成倍的相除,需要注意n的奇偶性),即类似于的二分查找法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class  {
public double myPow(double x, int n) {
if(n<0){
n=-n;
x = 1/x;
}
return pow(x,n) ;
}
public double pow(double x,int n){
if(n==0) return 1;
if(n==1) return x;
if(n%2==0) {
double tmp=pow(x,n/2);
return tmp*tmp;
}else{
double tmp=pow(x,n/2);
return tmp*tmp*x;
}
}
}