LEETCODE ALGORITHM:50. Pow(x, n)

题目

Implement pow(x, n), which calculates x raised to the power n (xn).

Example 1:

1
2
Input: 2.00000, 10
Output: 1024.00000

Example 2:

1
2
Input: 2.10000, 3
Output: 9.26100

Example 3:

1
2
3
Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25

Note:

  • -100.0 < x < 100.0
  • n is a 32-bit signed integer, within the range [−231, 231 − 1]

题解

快速幂解法

递归每次算一半

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
double myPow(double x, int nn) {
long long n=nn;
if(n==0) return 1.0;
double y=0;
if(n<0) y=myPow(x,-n/2);
else{ y=myPow(x,n/2);}
if(n>0) return n%2==0?y*y:y*y*x;
else return n%2==0?1/(y*y):1/(y*y*x);
}
};