除了使用系统给的求次幂的方法,我们还可以使用一下方法去求次幂。
方法一 二分幂
使用递归求n/2的幂。
代码如下。
func Power(base float64 ,exponent int) float64 {
//二分幂
if exponent ==0{
return 1
}
if exponent == 1{
return base
}
//递归求一半的次幂
ans := Power(base,exponent/2)
ans = ans * ans
//最后在判断是奇数还是偶数
if exponent %2 ==0{
return ans
}
return ans * base
}
方法二 快速幂方法
image
具体的步骤如上图所示。
代码如下。
import "math"
func Power(base float64 ,exponent int) float64 {
//快速幂
a := int(math.Abs(float64(exponent)))
flag := 1
r := 1.0
for a != 0{
if a & flag == 1{
r = r * base
}
base = base * base
a = a >> 1
}
if exponent < 0 {
return 1 / r
}
return r
}