寻找'的近似值;e';使用第一个n+;1 python中的连分数项

寻找'的近似值;e';使用第一个n+;1 python中的连分数项,python,Python,我试着在wiki中遵循[a1,a2,a3…]的续分数示例。当我运行程序时,我能够获得n=2的结果,如2.727272…75 但是当我尝试n=3时,有两个输出,它们的值更低(得到2.394和第二行2.3333) 我不确定是否需要将另一个集合添加到y=…行。如果是这样的话,我每次更改n时,是否必须将另一组I-1+等添加到y? 为什么我会得到两行答案?我如何完成循环有问题吗 这是我的密码: n = abs(int(input("Enter number: "))) y = 0 d = 0 for i

我试着在wiki中遵循
[a1,a2,a3…]
的续分数示例。当我运行程序时,我能够获得
n=2
的结果,如
2.727272…75
但是当我尝试
n=3
时,有两个输出,它们的值更低(得到
2.394
和第二行
2.3333
) 我不确定是否需要将另一个集合添加到
y=…
行。如果是这样的话,我每次更改
n
时,是否必须将另一组
I-1+
等添加到
y
? 为什么我会得到两行答案?我如何完成循环有问题吗

这是我的密码:

n = abs(int(input("Enter number: ")))
y = 0
d = 0

for i in range(n, 1, -1):
    if i == n:
        y = (i - 1) + ((i - 1)/((i-1)/(i + (i/(i + 1))))
        d = d + y
    else:
        d = i + 1

    e = 2 + (1/d)

    print (e)

这是您认为合适的(选择您喜欢的
n
):


请将您的代码作为文本(而不是图像或链接)包含在问题中。您可以通过高亮显示代码并单击编辑器中的
{}
按钮来获取代码格式(或者您可以自己将所有内容缩进额外的四个空格)。对于第一个
i
之后的任何
y
。您只需直接从
i
计算
d
(忽略其先前的值),然后从
d
计算
e
。我不确定我是否理解您试图实现的是哪一个连分数,因此我无法真正提出修复方案。哦,如果条件是反向的,那么可能是
的逻辑?是否要在第二次迭代和所有后续迭代中使用
if
块的代码,并且仅在第一次迭代中使用
else
?如果是,请使用
i!=n
而不是
i==n
from __future__ import division, print_function
from sys import argv
from math import factorial

e = 0
n =  int(argv[1]) if len(argv) > 1 else 100 # allowing to pass a value for n as an argument
for i in range(n):
    e += 1 / factorial(i)

print(e)