英文:
Golang | Is it possible to calculate a power value without using math library?
问题
我想知道如何在不使用 math
库的情况下计算一个幂值。
我已经查看了计算幂值的方法,大多数方法都使用 math
库来实现(例如 math.Pow
)。
例如,如果我们想计算 3 的 2 次方,我们可以在 Python 中使用 3**2
的方式,所以我很好奇是否可以通过数学符号在 Go 中进行类似的计算。
谢谢!
英文:
I am wondering how can we calculate a power value withing using math
library?
I have checked the method for calculating a power value that most of the ways are using the math
library to achieve (i.e., math.Pow
).
For example, if we wanna calculate 3^2, we can do the way like 3**2
in Python, so I am curious is it possible to do a similar way like Python via math symbols to calculate it in Go?
Thank you!
答案1
得分: 2
没有Go运算符("数学符号")可以实现这个,但是如果指数是常数,你当然可以直接写x*x
表示x的平方,或者x*x*x
表示x的立方。
如果指数不是常数但是是整数,计算n^exp的一个简单方法是使用重复乘法,类似这样:
func pow(n float64, exp int) float64 {
if exp < 0 { // 处理负指数
n = 1 / n
exp = -exp
}
result := 1.0
for i := 0; i < exp; i++ {
result *= n
}
return result
}
话虽如此,我不太确定为什么你要避免使用math.Pow
-- 它在标准库中,而且更快且更通用。
英文:
There's no Go operator ("math symbols") to do this, though if the exponent is constant you could of course just write x*x
for x^2, or x*x*x
for x^3.
If the exponent is not constant but is an integer, a simple way to calculate n^exp is to use repeated multiplication, something like this:
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
}
That said, I'm not exactly sure why you'd want to avoid math.Pow
-- it's in the standard library and it's faster and more general.
答案2
得分: 0
如果数字是整数,那么这段代码应该可以工作:
package main
import (
"fmt"
)
func main() {
number := 4
power := 5
result := 1
for power != 0 {
result = result * number
power = power - 1
}
fmt.Println(result)
}
英文:
If the numbers are integer, then this should work:
package main
import (
"fmt"
)
func main() {
number := 4
power := 5
result := 1
for power != 0 {
result = result * number
power = power - 1
}
fmt.Println(result)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论