戈朗 |是否可以在不使用数学库的情况下计算功率值?

Golang | Is it possible to calculate a power value without using math library?

我想知道如何使用 math 库计算功率值?

我已经查看了大多数方法都是使用math库实现的计算功率值的方法(即math.Pow)。

例如,如果我们想计算3^2,我们可以像Python中的3**2那样做,所以我很好奇是否可以像[=22]那样做类似的方法=] 通过数学符号在 Go 中计算它?

谢谢!

没有 Go 运算符(“数学符号”)可以执行此操作,但如果指数是常数,您当然可以只写 x*x 表示 x^2,或 x*x*x 表示 x^ 3.

如果指数不是常数而是整数,计算 n^exp 的一种简单方法是使用重复乘法,如下所示:

func pow(n float64, exp int) float64 {
    if exp < 0 { // handle negative exponents
        n = 1 / n
        exp = -exp
    }
    result := 1.0
    for i := 0; i < exp; i++ {
        result *= n
    }
    return result
}

就是说,我不太确定您为什么要避免使用 math.Pow -- 它在标准库中,速度更快,更通用。

如果数字是整数,那么这应该有效:

package main

import (
    "fmt"
)

func main() {
    number := 4
    power := 5
    result := 1

    for power != 0 {
        result = result * number
        power = power - 1
    }
    fmt.Println(result)
}