Tuesday, June 17, 2014

Pow(x,n) -- Leetcode

Question:
Implement pow(xn).
题意计算x的n次方,考虑复杂度和n的取值。

n有可能是正数或者负数,分开计算。
用递归的做法讲复杂度降到O(logn)。
  1. class Solution {  
  2. public:  
  3.     double pow(double x, int n) {  
  4.         if(n==0)return 1;  
  5.         if(n==1)return x;  
  6.         double temp=pow(x,abs(n/2));  
  7.         if(n>0)  
  8.         {  
  9.             if(n&1)return temp*temp*x;  
  10.             else return temp*temp;  
  11.         }  
  12.         else   
  13.         {  
  14.             if(n&1)return 1.0/(temp*temp*x);  
  15.             else return 1.0/(temp*temp);  
  16.         }  
  17.     }  
  18. };   

No comments:

Post a Comment