【发布时间】:2020-02-04 06:10:15
【问题描述】:
我试图将一个数组元素传递给一个递归函数,该函数计算阶乘并输出 0。有一条警告说 long_scalars 中遇到了溢出。每当我将硬编码数字传递给函数时,它似乎都可以正常工作。有谁知道为什么会发生这种情况或如何解决?
rand_10 = np.random.randint(100,500,10)
数组([173, 171, 375, 432, 393, 334, 268, 341, 183, 270])
def fact(x):
if x == 1:
return 1
else:
return x * fact(x-1)
fact(rand_10[0])
RuntimeWarning:long_scalars 中遇到溢出
输出: 0
编辑:我阅读了可能重复中提供的链接。我仍然无法弄清楚如何解决这个问题。如果这是解决方案,我应该如何以及在哪里将 dtype 设置为 int64?
【问题讨论】:
-
我阅读了上面的链接,但仍然无法弄清楚。我应该在函数的返回值中将 dtype 设置为 int64 吗?
-
173 的阶乘是一个314 位数字。样本数组中最大数字 432 的阶乘有 953 位。您的
randint()调用可以返回的最大数字具有 1132 位阶乘。也许您应该考虑使用更小范围的随机数?
标签: python