1、题目描述
Implement pow(x, n).
2、解题思路
该题目要求实现一个浮点类型数的n次幂,首先考虑n的正负或者0,然后利用递归思想求解,本文中提出了两种递归方法,第二种是第一种的改进版本,降低了算法的复杂度。
3、代码描述
简单递归方法,算法复杂度为O(n)
class Solution {
public:
double myPow(double x, int n) {
double p=1.00;
if (n>0)
p=x*myPow(x,n-1);
else if(n<0)
p=1.0/x*myPow(x,n-1);
return p;
}
};
改进的求解算法,将复杂度降为O(logn)
class Solution {
public:
double myPow(double x, int n) {
double p=1.00;
if(n<0)
x=1/x;
n=-n;
if (n==1)
p=x;
else if(n>1)
p=myPow(x,n/2)*myPow(x,n-n/2);
return p;
}
};