题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。
思路1
有点繁琐,另结果result为1,若exponent)为0,直接返回result,
利用count记录exponent的绝对值,最后判断exponent,若exponent为负数,则 result=1/result;
否则直接返回。
public class Solution {
public double Power(double base, int exponent) {
double result =1;
if(exponent==0) return result;
result=base;
int count=exponent>0?exponent:-exponent;
for(int i=1;i<count;i++)
result*=base;
if(exponent<0)
result=1/result;
return result;
}
}
思路二
快速幂方法
public class Solution {
public double Power(double base, int exponent) {
double result =1;
int temp=Math.abs(exponent);
while(temp!=0){
if((temp&1)==1) result*=base;
base*=base;
temp>>=1;
}
return exponent>1?result:1/result;
}
}
其他的题题解
剑指offer题解 java版
本文深入解析了快速幂算法,一种高效计算指数运算的方法。通过对比传统逐次乘法,快速幂算法显著减少了计算次数,尤其是在处理大数指数时优势明显。文章提供了详细的实现步骤和Java代码示例,帮助读者理解并掌握这一重要的算法技巧。
4980

被折叠的 条评论
为什么被折叠?



