下面的代码片段无法在N := big.NewInt(n)
上编译,并出现以下错误:
不能使用n(int类型的变量)作为big的参数中的int 64值。NewInt
func Factorial(n int) *big.Int {
var result = new(big.Int)
i := new(big.Int)
N := big.NewInt(n)
for i.Cmp(N) < 0 {
result = result.Mul(i, result)
i = i.Add(i, new(big.Int))
}
return result
}
字符串
如果我传递一个int 64文字(即N := big.NewInt(1)
),它就可以工作。但是我需要一种方法来将int 64 * 变量 * 或 * 参数/参数 * 转换为big.Int
。我做错了什么?Go语言根本不支持这个吗?
1条答案
按热度按时间x7yiwoj41#
错误是因为https://pkg.go.dev/math/big#NewInt函数将
int64
值作为参数,而不是int
类型。字符串
此外,计算逻辑可以非常简单地写为
型
https://go.dev/play/p/A-H-y10OwBb