50. Pow(x, n)
题目大意
Implement pow(x, n)
, which calculates x
raised to the power n
(i.e., x^n
).
中文释义
实现 pow(x, n)
,计算并返回 x
的 n
次幂(即 x^n
)。
示例
- 示例 1:
- 输入:
x = 2.00000
,n = 10
- 输出:
1024.00000
- 输入:
- 示例 2:
- 输入:
x = 2.10000
,n = 3
- 输出:
9.26100
- 输入:
- 示例 3:
- 输入:
x = 2.00000
,n = -2
- 输出:
0.25000
- 解释:
2^-2 = 1/2^2 = 1/4 = 0.25
- 输入:
限制条件
-100.0 < x < 100.0
-2^31 <= n <= 2^31-1
n
是一个整数。- 要么
x
不为零,要么n
大于 0。 -10^4 <= x^n <= 10^4
解题思路
使用递归方法实现快速幂算法。这种方法通过将幂分解成更小的幂来减少计算的次数。
步骤说明
- 如果
n
为 0,则返回 1.0(任何数的 0 次幂等于 1)。 - 计算
x
的n/2
次幂(递归调用)。 - 如果
n
是奇数,返回half * half * x
;如果是偶数,只返回half * half
。 - 如果
n
小于 0,计算1/x
的-n
次幂。
代码
class Solution {
public:
double fastPow(double x, int n) {
if (n == 0) return 1.0;
double half = fastPow(x, n / 2);
if (n % 2) {
return half * half * x;
} else {
return half * half;
}
}
double myPow(double x, int n) {
if (n < 0) return fastPow(1 / x, -n);
else return fastPow(x, n);
}
};