python - 将数组元素输入递归函数时出错
问题描述
我试图将一个数组元素传递给一个计算阶乘的递归函数,它输出 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?
解决方案
这是工作代码:
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()方法将其转换为原生 Python 类型(即int )
最好的祝福!
推荐阅读
- c# - 如何将.Net Framework中的函数调用到.Net core
- sql - 我需要构造如下表,动态使用枢轴或非枢轴
- scala - 在 apache spark 数据帧中读取 pdf 文件
- c# - 在鼠标拖动时沿其自己的 X 轴来回移动对象
- c# - 如何更改日文日历的引导日期选择器输入字段中的日期格式
- java - 如何将计算数组和的任务动态划分为多个CompletableFuture
- php - chrome 中的 Xampp 工作正常,但无法在 Mozilla 浏览器中打开
- neural-network - 如何制作离线翻译?
- c# - 如何正确继承Unity的Awake()、Start()、Update、FixedUpdate()等回调函数?
- excel - 个人工作簿宏未运行