1. 题⽬链接:50.Pow(x,n)
2. 题⽬描述:
3. 解法(递归-快速幂):
算法思路:
1. 递归函数的含义:求出x 的n 次⽅是多少,然后返回;
2. 函数体:先求出x 的n / 2 次⽅是多少,然后根据n 的奇偶,得出x 的n 次⽅是多少;
3. 递归出⼝:当n 为0 的时候,返回1 即可。
C++算法代码:
class Solution
{
public:
//返回x的n次方
double Pow (double x,long long n)
{
//0次方为1
if(n==0)
{
return 1;
}
//先计算一半的幂
double temp=Pow(x,n/2);
//然后分情况计算
return n%2==0?temp*temp:temp*temp*x;
}
double myPow(double x, int n)
{
//判断正负次幂返回值
return n>0?Pow(x,(long long)n):1.0/Pow(x,-(long long)n);
}
};
Java算法代码:
class Solution
{
public double myPow(double x, int n)
{
return n < 0 ? 1.0 / pow(x, -n) : pow(x, n);
}
public double pow(double x, int n)
{
if (n == 0) return 1.0;
double tmp = pow(x, n / 2);
return n % 2 == 0 ? tmp * tmp : tmp * tmp * x;
}
}