给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
Java版
public class Eleven { public double power(double base, int exponent) { double result = 0.0; if(equal(base,0.0) && exponent < 0){ System.out.println("0的负数次幂没有意义"); } if(exponent < 0){ result = 1.0/powerWithExponent(base,-1*exponent); }else{ result = powerWithExponent(base,exponent); } return result; } public boolean equal(double num1, double num2) { if ((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001)) return true; else return false; } public double powerWithExponent(double base, int exponent) { if(exponent == 0){ return 1; } if(exponent == 1){ return base; } double result = powerWithExponent(base,exponent >>1); result = result*result; if((exponent & 1) == 1 ){ result = result*base; } return result; }
Python 版
#!/usr/bin/env python # _*_ coding:utf-8 _*_ """ @author: 。。。。。。 @contact: 。。。。。。 @file: 。。。。。。。 @time: 。。。。。。 """ class Solution: def Power(self, base, exponent): result = 0.0; if (self.Equal(base, 0.0) and exponent < 0): print("0的负数次幂没有意义") if (exponent < 0): result = 1.0 / self.PowerWithExponent(base, -1 * exponent) else: result = self.PowerWithExponent(base, exponent); return result def Equal(self,num1,num2): if ((num1 - num2 > -0.0000001) and (num1 - num2 < 0.0000001)): return True else: return False def PowerWithExponent(self,base,exponent): if (exponent == 0): return 1.0 if (exponent == 1): return base result = self.PowerWithExponent(base, exponent >> 1) result = result * result if ((exponent & 1) == 1): result = result * base return result if __name__ == '__main__': solution = Solution() print(solution.Power(2,-4))