您的位置:首页 > 编程语言 > C语言/C++

LeetCode_50_Pow(x, n)

2017-07-05 19:28 459 查看
题目:Implement pow(x, n).

解法1:常规递归,时间复杂度o(n)

解法2:分治法改进递归,注意 n == INT_MIN 情况需单独考虑。尽量直接return而不要赋值给变量返回,容易出问题

double myPow(double x, int n) {
if (n == 0)
return 1.0;
else if (n > 0)
{
double half = (double)myPow(x, n / 2);
if (n % 2 == 0)
return half*half;
else
return half*half*x;
}
else
{
if (n == INT_MIN) {
return 1.0 / (pow(x, INT_MAX)*x);
//return 1.0 / (half*half);
}

n = -n;

double half = (double)myPow(x, n / 2);

if (n % 2 == 0)
return 1.0 / (half*half);
else
return 1.0 / (half*half*x);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ leetcode 算法