Pow(x, n)

Implement pow(xn).

 

Runtime: 23ms

 1 class Solution {
 2 public:
 3     /**
 4      * @param x the base number
 5      * @param n the power number
 6      * @return the result
 7      */
 8     double myPow(double x, int n) {
 9         // Write your code here
10         if (x == 0) return 0;
11         if (n == 0) return 1;
12         if (n == 1) return x;
13         if (n == -1) return 1 / x;
14         
15         double temp = myPow(x, n / 2);
16         return temp * temp * myPow(x, n % 2);
17     }
18 };

 

 

Analyse: Be aware of corner cases. For exmaple, x = 0, n = 0, n = 1, and n < 0. Note the highlited area, if n == INT_MIN, we have to use braces to ensure the correctness. 

Runtime: 4ms.

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) {
 4         if(!x) return 0.0;
 5         if(!n) return 1.0;
 6         if(n == 1) return x;
 7         
 8         if(n < 0) {
 9             double temp = myPow(1 / x, -(n / 2));
10             return temp * temp * myPow(1 / x, -(n % 2));
11         }
12         else{
13             double temp = myPow(x, n / 2);
14             return temp * temp * myPow(x, n % 2);
15         }
16     }
17 };

 

posted @ 2016-08-10 00:03  amazingzoe  阅读(118)  评论(0编辑  收藏  举报