pow(x, n),有时递归的时候要注意用变量保存中间结果

来源:互联网 发布:js如何创建数组 编辑:程序博客网 时间:2024/05/28 06:05
double pow(double x, int n) {
        if(n==0)
            return 1;
        else if(n==1)
            return x;
        else if(x==0)
            return 0;
            
        if(n<0){
            x=1/x;
            n=-n;
        }
        
      //这样写就超时了,因为执行了两次子函数  
        if(n%2==0)
            return pow(x,n>>1)*pow(x,n>>1);
        else
            return x*pow(x,n>>1)*pow(x,n>>1);

        
        double half=pow(x,n>>1);
        if(n&0x1)                     / /&优先级低于==,n&0x1==0永远是0
            return x*half*half;
        else
            return half*half;
        
    }
0 0
原创粉丝点击