leetcode [50] Pow(x, n)

Implement pow(x, n), which calculates x raised to the power n (x^n).
Example 1:
Input: 2.00000, 10
Output: 1024.00000
Example 2:
Input: 2.10000, 3
Output: 9.26100
Example 3:
Input: 2.00000, -2
Output: 0.25000
Explanation: 2^-2 = 1/2^2 = 1/4 = 0.25
Note:
-100.0 < x < 100.0
n is a 32-bit signed integer, within the range [−2^31, 2^31 − 1]
 
题目大意:
实现计算x的n次方
 
解法:
采用递归调用的方法,注意当n=INT_MIN的时候,使用n=-n,int值会存不住。所以这种情况,我们要另外做处理,直接进行递归调用。
class Solution {
public:
    double myPow(double x, int n) {
        if(n==0) return 1;
        if(n==INT_MIN) return myPow(x*x,n/2);
        if(n<0){
            n=-n;
            x=1/x;
        }

        return (n%2==0)?myPow(x*x,n/2):x*myPow(x*x,n/2);
    }
};

猜你喜欢

转载自www.cnblogs.com/xiaobaituyun/p/10609927.html
今日推荐