寻找'的近似值;e';使用第一个n+;1 python中的连分数项
我试着在wiki中遵循寻找'的近似值;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
[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)