题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路
要考虑exponent的正负性。
而且,由于base的浮点类型,所以还要考虑base是否等于0的情况。
0^0对于为1或者为0都可以接受,那么在此题目中要求的是为1的。
因为当exponent为负数时候,最后一步操作会取倒数,要判断取倒数之前的数是否为0。
如果为0,那么return 0。
public class Solution {
public double binary_add(double base,int target){
if(target==0)return 1.0;
double sum=binary_add(base,target>>1);
if((target&1)==1){
return sum*sum*base;
}
else return sum*sum;
}
public double Power(double base, int exponent) {
if(exponent==0)return 1.0;
if((base<0.0000001)&&(base>-0.0000001)&&(exponent>0))return 0.0;
if(exponent>0)return binary_add(base,exponent);
else {
double temp=binary_add(base,-1*exponent);
if((temp<0.0000001)&&(temp>-0.0000001))return 0.0;
else return 1.0/temp;
}
}
}