Любое значение выше 40 возвращает бесконечность?не уверен почему - PullRequest
3 голосов
/ 04 июля 2019

Я завершаю задачу Эйлера проекта, но эта функция возвращает бесконечность для любого значения, превышающего 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 Ответ

4 голосов
/ 04 июля 2019

Попробуйте:

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

B(40)

Скорее всего, это медленнее, но, как вы делаете вещи из проекта Euler, я думаю, вы не хотите приближать значения гребенки, но использовать точные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...