import fractions
import sys
default_recursion_limit = sys.getrecursionlimit()
print(default_recursion_limit)
sys.setrecursionlimit(2500)
print(sys.getrecursionlimit())
def f(n):
if n == 1:
return fractions.Fraction(1, 6)
elif n > 1:
divisor = 4 * (4 * n - 1) * (4 * n - 2)
a = fractions.Fraction(1, divisor)
return a + f(n - 1)
else:
return 0
def g(n):
if n == 1:
return fractions.Fraction(1, 30)
elif n > 1:
divisor = 4 * (4 * n + 1) * (4 * n + 2)
a = fractions.Fraction(1, divisor)
return a + g(n - 1)
else:
return 0
F = f(2)
G = g(2)
print("F={0}, \r\nG={1}, \r\nF+3-G={2}".format(F, G, F+3-G))
# F = f(2024)
# G = g(2024)
# print("F={0}, \r\nG={1}, \r\nF+3-G={2}".format(F, G, round(float(F+3-G), 2)))
F = f(2024)
G = g(2024)
print("F={0}, \r\nG={1}, \r\nF+3-G={2}".format(F, G, round(float(F+3-G), 2)))
sys.setrecursionlimit(default_recursion_limit)
print(sys.getrecursionlimit())
python中默认的递归次数限制是1000,可以用sys.getrecursionlimit查看。因为本题递归的次数2024超过了1000,所以在程序开始时将此递归次数限制设为2500。程序末尾再恢复为1000。
Python中分数可以用fractions.Fraction标识,参数1为分子,参数2为分母。
最后再对计算结果取两位小数round(float(X), 2)