任何大于40的值都将返回无穷大?不知道为什么

时间:2019-07-04 10:26:34

标签: python infinity

我正在解决项目欧拉问题,但是对于任何超过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

对解决此问题的任何帮助,将不胜感激。

1 个答案:

答案 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中进行操作时,我想您不想估算梳齿值,而是使用精确的梳齿值。