我正在解决项目欧拉问题,但是对于任何超过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
对解决此问题的任何帮助,将不胜感激。
答案 0 :(得分:4)
尝试一下:
def B(x):
product = 1
for i in range(x + 1):
product *= comb(x, i, exact=True)
return int(product)
B(40)
最有可能是速度较慢,但是当您从项目Euler中进行操作时,我想您不想估算梳齿值,而是使用精确的梳齿值。