题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。
思路:使用DFS来减少计算量。
class Solution {
double dp[32]={0.0};
double DFS(double base,int e)
{
int i=(int)(e/2);
if(e<=1)
{
return dp[e];
}
if(dp[e]!=0.0)
{
return dp[e];
}
if(dp[i]!=0.0)
{
dp[e]=dp[i]*dp[i];
return dp[e];
}
dp[e]=DFS(base,i)*DFS(base,i);
return dp[e];
}
public:
double Power(double base, int exponent) {
int pos=1;
if(base==0.0)
{
return 0.0;
}
if(exponent>=0)
{
pos=1;
if(exponent==0)
{
return 1.0;
}
if(exponent==1)
{
return base;
}
}
else
{
pos=0;
if(exponent==-1) return 1.0/base;
exponent=-exponent;
}
dp[0]=1.0;
dp[1]=base;
double ans;
int temp=1;
if(exponent%2==1) temp=base;
ans=DFS(base,exponent)*temp;
if(pos)
{
return ans;
}
else
{
return 1.0/ans;
}
}
};