pow(x,n) leecode
3800 ワード
https://oj.leetcode.com/problems/powx-n/コミットアドレス高速べき乗の使用については、検討してください.
1 public class Solution {
2 public double pow(double x, int n) {
3
4 if(n==0) return 1.0;
5 if(x==1) return 1.0;
6 if(x==0)return 0;
7 if(x==-1&&n%2==0) return 1; // , , n=0 n>0 n<0,
8 int f=1;
9 if(n<0){ f=-1; n=-n;}
10 double res=1.0;
11 double temp=x;
12
13 while(n!=0)
14 {
15 if((n&1)==1)
16 {
17 res*=temp;
18 }
19 temp=temp*temp;
20 n=n>>1;
21 }
22
23 if(f==1) return res;
24 else return 1.0/res;
25
26
27
28
29
30 }
31 }