Tips:
1. Use divide and conquer.
2. Powers can be negative. Always remember this.
3. Try to reduce the times of multiplication as many as possible.
01 public double pow(double x, int n) {
02 if(n==0)
03 return 1;
04 if(n==1)
05 return x;
06
07 boolean isNegative=false;
08 if(n<0)
09 {
10 n=-n;
11 isNegative=true;
12 }
13
14 double result=pow(x,n/2);
15 result=result*result;
16 if(n%2==1)
17 result*=x;
18 if(isNegative)
19 result=1/result;
20 return result;
21 }
02 if(n==0)
03 return 1;
04 if(n==1)
05 return x;
06
07 boolean isNegative=false;
08 if(n<0)
09 {
10 n=-n;
11 isNegative=true;
12 }
13
14 double result=pow(x,n/2);
15 result=result*result;
16 if(n%2==1)
17 result*=x;
18 if(isNegative)
19 result=1/result;
20 return result;
21 }
没有评论:
发表评论