您好我想在不使用math.h libary的情况下为pow函数编写代码。
这段代码怎么样?当b <0
时如何解决? int MyPow(int a,int b){
if(b<0)
return 1 / MyPow (a,-b)
else if(b==0)
return 1;
else if(b==1)
return a;
else
return a*MyPow(a,b-1)
}
答案 0 :(得分:1)
除了一个条件外,一切似乎都很完美: - when b<0
。
对于b <0,只需返回
return (1.0/a)*MyPow(a,abs(b)-1); //where abs(b) is absolute value of b.
OR
return (1.0/a)*(MyPow(a,b+1));
此外,您的函数定义对于执行负取幂无效,您应该将其更改为
float MyPow(int a,int b)
答案 1 :(得分:1)
我认为可能是最好的方式,found here
int pow(int base, int exp)
{
if(exp < 0)
return -1;
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
}
答案 2 :(得分:0)
从http://www.geeksforgeeks.org/write-a-c-program-to-calculate-powxn/
获取复杂性较低的解决方案float power(float x, int y)
{
float temp;
if( y == 0)
return 1;
temp = power(x, y/2);
if (y%2 == 0)
return temp*temp;
else
{
if(y > 0)
return x*temp*temp;
else
return (temp*temp)/x;
}
}