LeetCode 50 Pow(x,n)

Posted 高鸣泽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 50 Pow(x,n)相关的知识,希望对你有一定的参考价值。

问题:

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:

求x的n次幂,要是直接用暴力循环解决的话,即使是时间复杂度是O(n),但是n过大也会时间超时。所以借鉴二分查找的思想,每次算出n/2的值,即可解对。

用递归解决。

递归的条件:1.有循环,并且循环不是通常的那种,第二,循环到底有边界。

代码:

class Solution {
private double fastPow(double x,long N){
if(N==0){
return 1.0;
}
double half = fastPow(x,N/2);
if(N%2==0){
return half*half;
}else{
return half*half*x;
}
}
public double myPow(double x, int n) {
double powNum = 1;
long N = n;
if(N<0){
x = 1/x;
N = -N;
}

return fastPow(x,N);
}
}

以上是关于LeetCode 50 Pow(x,n)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode || 50Pow(x, n)

LeetCode 50. Pow(x, n)

LeetCode 50. Pow(x, n)

LeetCode 50. Pow(x, n)

LeetCode 50. Pow(x, n)

Leetcode 50. Pow(x, n)