思路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;
}