数值的整数次方

it2022-05-05  185

/* * 给定一个double类型的浮点数base和int类型的整数exponent。 * 求base的exponent次方。 * * 思路:快速幂法 * 将幂exponent转换为二进制幂表示法,如13:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0; * 快速幂法将expoent >>1 ,如果exponent不为0则乘上本身,否则将base继续翻倍; * */ public double Power(double base, int exponent) { double cur = base; int exp = exponent; if(exp == 0){ return 1; }else if(exp < 0){ if(cur == 0){ return 0; } exp = -exponent; }else{ exp = exponent; } double res =1; while(exp != 0){ if((exp & 1) == 1){ res *= cur; } cur *= cur; exp >>= 1; } return exponent > 0 ? res : (1 / res); }

最新回复(0)