Python 将数组元素输入递归函数时出错

Python 将数组元素输入递归函数时出错,python,Python,我试图将一个数组元素传递到一个递归函数中,该函数计算阶乘并输出0。有一条警告说,在long_标量中遇到了溢出。无论何时我将硬编码的数字传递到函数中,它似乎都可以正常工作。有人知道为什么会发生这种情况或者如何解决吗 rand_10 = np.random.randint(100,500,10) 数组([17317137543239334268341198370]) RuntimeWarning:在长\u标量中遇到溢出 输出: 0 编辑:我阅读了可能的副本中提供的链接。我仍然不知道如何解决这个问题

我试图将一个数组元素传递到一个递归函数中,该函数计算阶乘并输出0。有一条警告说,在long_标量中遇到了溢出。无论何时我将硬编码的数字传递到函数中,它似乎都可以正常工作。有人知道为什么会发生这种情况或者如何解决吗

rand_10 = np.random.randint(100,500,10)
数组([17317137543239334268341198370])

RuntimeWarning:在长\u标量中遇到溢出

输出: 0


编辑:我阅读了可能的副本中提供的链接。我仍然不知道如何解决这个问题。如果这是数据类型的分辨率,我应该如何以及在何处将其设置为int64?

以下是工作代码:

import numpy as np

rand_10 = np.random.randint(100,500,10, dtype=np.int64)

def fact(x):
    if x == 1:
        return 1
    else:
        return x * fact(x-1)

x = rand_10[0].item()   # method item() to convert the value into a native Python type
print(fact(x))
rand_10[0]返回类型numpy.int64。因此,您需要使用方法item()


致以最良好的祝愿

可能的重复:可能的重复我通过上面的链接读了一遍,但仍然无法理解。我应该在函数的返回值中将dtype设置为int64吗?173的阶乘是314位数字。样本数组中最大数字432的阶乘有953位数字。
randint()
调用可以返回的最大数字是1132位阶乘。也许你应该考虑使用一个小得多的随机数范围。
import numpy as np

rand_10 = np.random.randint(100,500,10, dtype=np.int64)

def fact(x):
    if x == 1:
        return 1
    else:
        return x * fact(x-1)

x = rand_10[0].item()   # method item() to convert the value into a native Python type
print(fact(x))