【题目描述】给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
【解题思路1】
//1.使用库函数
public class Solution {
public double Power(double base, int exponent) {
return Math.pow(base, exponent);
}
}
【解题思路2】
//1. 按照幂的定义。循环累乘。
//2. 注意,若给定的指数为负数,则返回累乘的倒数。
//3. 若给定的指数为零,则返回1。
//4. 底数若为零的情况。
public class Solution {
public double Power(double base, int exponent) {
double result = 1.000;
int ex = Math.abs(exponent);
boolean flag = true;
if(exponent<0){
flag = false;
}
while(ex > 0){
result *= base;
ex--;
}
if(flag == false){
result = 1/result;
}
return result;
}
}
【解题思路3】
//1.递归:n为偶数,a^n=a^n/2*a^n/2;n为奇数,a^n=(a^(n-1)/2)*(a^(n-1/2))*a
时间复杂度O(logn)
public class Solution {
public double Power(double base, int exponent) {
int n=Math.abs(exponent);
if(n==0)
return 1;
if(n==1)
return base;
double result=Power(base,n>>1);
result*=result;
if((n&1)==1)
result*=base;
if(exponent<0)
result=1/result;
return result;
}
}
本文介绍了计算浮点数的整数次幂的三种方法:使用标准库函数、循环累乘和递归分解。每种方法都有详细的代码实现,并讨论了它们的时间复杂度。
&spm=1001.2101.3001.5002&articleId=73087877&d=1&t=3&u=a91923fd8b0a4ffe8cddac1679dd9a2c)
2754

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



