// Source : https://leetcode.cn/problems/powx-n/
// Date : 2022-6-12
// 本方法超时
// class Solution {
// public:
// // 计算一个数字n次幂的方法
// double my_cal(double x, int n)
// {
// double temp = 1.0;
// for(int i = 0;i < n;++i)
// {
// temp *= x;
// }
// return temp;
// }
// double myPow(double x, int n) {
// double res;
// if(x == 1)
// return 1.0;
// if(n > 0)
// return my_cal(x, n);
// else if(n < 0)
// {
// // 如果幂次小于0的话首先将幂次转为正数
// n = abs(n);
// // 将x转为对应的分数
// x = 1 / x;
// res = my_cal(x, n);
// }
// else
// return 1.0;
// return res;
// }
// };
class Solution {
public:
double quickM(double x, int n)
{
// 如果幂次为0的话就返回1.0
if(n == 0)
return 1.0;
double temp = quickM(x, n / 2);
// 如果幂次为奇数的话需要在结果之后再乘原来的数字
return n % 2 == 0 ? temp * temp : temp * temp * x;
}
double myPow(double x, int n) {
int tem = n;
return tem > 0 ? quickM(x, n) : 1.0 / quickM(x, abs(tem));
}
};



