整数的幂次方

来源:互联网 发布:sql查询重复数据 编辑:程序博客网 时间:2024/05/18 20:11

思路1  求整数的幂次方,则考虑三种情况,整数  x 幂次方  n

1  如果x=0,n=0 返回1  ,或者n=0 返回1

2  如果x =0 ,n!=0返回 0

3  考虑 如果  n 为偶数,则 x 的幂次方等于 x的n/2次幂的平方;如果n为奇数,则 等于 x 的 (n-1)/2次幂的平方乘 x。考虑 n  的 符号

代码 :

非递归

    double pow(double x, int n) {        if(x==0&&n==0||n==0)            return 1;        if(x==0&&n!=0)            return 0;        bool flag=false;        if(n<0){            flag=true;            n=-n;        }        double result=1.0;        while(n>0){            if(n & 0x1)                result=result*x;            x=x*x;            n=n>>1;        }        if(flag)            result=1.0/result;        return result;    }
递归:

    double pow(double x, int n) {        if(n<0){            return 1.0/powCore(x,-n);        }        return powCore(x,n);    }    double powCore(double base,int n){        if(n==0)            return 1;        double result=powCore(base,n / 2);        result *= result;        if(n & 0x1 == 1)            result *= base;                return result;    }





原创粉丝点击