给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
方法一:
注意指数为负的情况。正常迭乘 时间复杂度为0(n);
public class Solution { public double Power(double base, int exponent) { if(base == 0){ return 0; } if(exponent == 0){ return 1; } double result = base; int flag=0; if(exponent < 0){ flag =1; exponent=-exponent; } for(int i =1;i <exponent;i ++){ result *= base; } return flag == 1?1/result:result; } }
方法2:用快速幂方法
参考博客:https://www.cnblogs.com/lca1826/p/6748372.html
public class Solution { public double Power(double base, int exponent) { if(base == 0){ return 0; } if(exponent == 0){ return 1; } double result=1.0; int expo=exponent; if(exponent < 0){ expo=-exponent; } while(expo!=0){ if( (expo&1)!=0){ result *= base; } base *= base; expo=expo>>1; } return exponent >0?result:(1/result); } }