25 lines
492 B
Python
25 lines
492 B
Python
from decimal import Decimal, getcontext
|
|
|
|
def calc(fun, n):
|
|
temp = Decimal("0.0")
|
|
|
|
for ni in xrange(n+1, 0, -1):
|
|
(a, b) = fun(ni)
|
|
temp = Decimal(b) / (a + temp)
|
|
|
|
return fun(0)[0] + temp
|
|
|
|
def fsqrt2(n):
|
|
return (2 if n > 0 else 1, 1)
|
|
|
|
def fnapier(n):
|
|
return (n if n > 0 else 2, (n - 1) if n > 1 else 1)
|
|
|
|
def fpi(n):
|
|
return (6 if n > 0 else 3, (2 * n - 1) ** 2)
|
|
|
|
getcontext().prec = 50
|
|
print calc(fsqrt2, 200)
|
|
print calc(fnapier, 200)
|
|
print calc(fpi, 200)
|