2

関数を持つプログラムがあると仮定します

def fakultaet(x):
    if x>1:
        return(x* fakultaet(x-1)) 
    else:
        return(1)

与えられた数値の階乗を返すので、計算する必要があります

1.0/fakultaet(200)

しかし、オーバーフロー エラーが発生します: long int too large to convert to float.

どうすればこの問題を解決できますか?

4

1 に答える 1

6

これを試すことができます:

from decimal import Decimal

def fakultaet(x):  # as you have it currently
    if x>1:
        return(x * fakultaet(x-1)) 
    else:
        return(1)

print Decimal(1.0) / fakultaet(200)

出力:

1.267976953480962421753016371E-375

ああ、また、モジュールには既にfactorial関数があります。ファイルの先頭に含めるだけで、それにアクセスできます。mathfrom math import factorial

于 2012-11-09T21:13:07.623 に答える