写入Pow函数在C中没有math.h

时间:2014-08-27 11:05:29

标签: c function recursion pow

您好我想在不使用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)
    }

3 个答案:

答案 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;
    }
}