本文共 827 字,大约阅读时间需要 2 分钟。
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0方法一: 正数直接累乘exp次就好了,负数取倒数累乘-exp次
public double Power(double base, int exp) { if(exp == 0) return 1.0; if(exp<0){ base = 1/base; exp = -exp; } double result = 1.0; for(int i=0;i
方法二:快速幂,也就是9的5次幂可分解为 81819,再用递归方式处理
public double Power(double base, int exp) { if(exp < 0){ //负指数转为正指数 base = 1/base; exp = -exp; } return power(base,exp); } public double power(double base, int exp){ if(exp == 0) return 1.0; double result; result = Power(base,exp/2); //先求出n/2次幂的结果 if((exp&1) == 1){ //奇数的判别 return result * result * base; }else return result * result; }
1、快速幂:8次幂不需要累乘8次, 计算出4次幂的结果,再平方就好了
2、判断一个数是否为奇数,直接&1 就好了转载地址:http://srle.baihongyu.com/