面试11:数值的整数次方
题目:实现函数double power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。
首先这个题虽然简单,但是有很多小细节,比如base等于0,或者exponent小于0这些情况都是需要好好考虑考虑的。
解题思路很简单,主要是一些小细节。
-
base为0的情况
-
exponent小于0.
-
Base为0时,浮点数怎么和0比较。
我的代码如下:
#include<stdio.h>
bool Equal(double num1,double num2)
{
if(num1-num2>0.00001 && num1-num2<0.00001)
{
return true;
}
else
{
return false;
}
}
double Power(double base,int exponent)
{
//int flag=1;
double result=1.0;
if(Equal(base,0) && exponent < 0)
{
return 1;
}
else if(exponent<0)
{
exponent=exponent-2*exponent;
for(int i=1; i<=exponent; i++)
{
result=result*base;
}
result=1/result;
return result;
}
else if(exponent>0)
{
for(int i=1; i<=exponent; i++)
{
result=result*base;
}
return result;
}
}
int main()
{
double a=Power(2,2);
printf("%f\n",a);
double b=Power(2.5,3);
printf("%f\n",b);
double c=Power(4.6,-2);
printf("%f\n",c);
}
执行结果: