第一期day1
leetcode——50. Pow(x, n)
-
实现 pow(x, n) ,即计算
x
的整数n
次幂函数(即, x n x^n xn)。 -
示例一:
输入:x = 2.00000, n = 10 输出:1024.00000
-
示例二:
输入:x = 2.10000, n = 3 输出:9.26100
-
示例三:
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
解法
- 这题不能直接暴力破解,因为会超时
- 然后是n,需要用long long,题目给的n很大用int装不下
快速幂(分治法)
-
计算 x n x^n xn就是先计算y= x n / 2 x^{n/2} xn/2 ,通过递归不断的分
-
最终
若n为偶数那么 x n = y 2 x^n=y^2 xn=y2,
若n为奇数那么 x n = y 2 ∗ x x^n=y^2*x xn=y2∗x;
代码实现
class Solution {
public:
double pow(double x,long long n)
{
double y;
if(n==0)
{
return 1.0;
}
y=pow(x,n/2);
return n%2==0?y*y:y*y*x;
}
double myPow(double x, long long n)
{
return n>=0?pow(x,n):1.0/pow(x,-n);
}
};//leetcode提交的