python - 梳子:任何大于 40 的值都会返回无穷大?不知道为什么
问题描述
我正在完成一个项目欧拉问题,但是这个函数对于任何超过 40 的值都返回无穷大。
from scipy.special import comb
def B(x):
product = 1
for i in range(x + 1):
product *= comb(x, i)
return product
我要回来的
problem_650.py:10: RuntimeWarning: overflow encountered in double_scalars
product *= comb(x, i)
inf
任何解决此问题的帮助将不胜感激。
解决方案
尝试这个:
def B(x):
product = 1
for i in range(x + 1):
product *= comb(x, i, exact=True)
return int(product)
B(40)
它很可能更慢,但是当你从项目 Euler 中做一些事情时,我猜你不想近似梳值,而是使用确切的值。
推荐阅读
- c++ - 在 macOS 中使用 omp.h 的正确方法
- macos - 如何在 macOS Big Sur 上安装 valgrind?
- unity3d - unity:加载一组资源
- python-3.x - 在 Python 中创建嵌套字典
- javascript - Swiper Slider 3d Cube Slide 不工作?
- firebase - 如何使用邮递员将我的推送通知发送给特定用户?
- css - 在某些表格列上应用 box-shadow
- webserver - 从 Wan 访问网络服务器(位于 Lan)
- flutter - 摆脱涟漪效应 TextButton Flutter
- python - 使用 opencv solvePnP 将 2D 像素坐标转换为 3D 世界坐标