首页 > 解决方案 > 梳子:任何大于 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

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

标签: pythoncombinatoricsinfinity

解决方案


尝试这个:

def B(x):
    product = 1
    for i in range(x + 1):
        product *= comb(x, i, exact=True)
    return int(product)

B(40)

它很可能更慢,但是当你从项目 Euler 中做一些事情时,我猜你不想近似梳值,而是使用确切的值。


推荐阅读