文章524
标签277
分类67

算法:数值的整数次方


数值的整数次方

数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0

分析

题目本质就是求快速幂

快速幂:

1
2
3
4
5
6
7
8
9
10
11
12
private double pow(double base, int exp) {
if (exp == 0.0 || base == 1.0) return 1.0;
double res = 1.0;
while (exp != 0) {
if ((exp & 1) == 1){
res *= base;
}
base *= base;
exp >>= 1;
}
return res;
}

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Solution {
public double Power(double base, int exponent) {
if (base == 0.0 && exponent < 0) return 0;

boolean negative = exponent < 0.0;
exponent = Math.abs(exponent);
return negative ? 1 / helper(base, exponent) : helper(base, exponent);
}

private double helper(double base, int exp) {
if (exp == 0.0 || base == 1.0) return 1.0;
double res = 1.0;
while (exp != 0) {
if ((exp & 1) == 1){
res *= base;
}
base *= base;
exp >>= 1;
}
return res;
}
}

本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/cn/1996/07/27/%E7%AE%97%E6%B3%95-%E6%95%B0%E5%80%BC%E7%9A%84%E6%95%B4%E6%95%B0%E6%AC%A1%E6%96%B9/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可