2016-03-19 69 views
-3

我試圖在wiki中繼續使用[a1, a2, a3...]的小數部分示例。當我運行該程序,我能獲得針對結果作爲n = 22.727272...75 但是當我嘗試n = 3有兩個輸出,它們是低(獲得2.394和第二線2.3333 ...) 我不知道我是否需要添加另一個設置爲y =...一行。如果是這樣,我不得不每次更改n時再添加一組i -1+等到y? 爲什麼我得到兩個答案?我是如何完成循環的問題?使用python中連續分數的前n + 1項找到近似值'e'

這裏是我的代碼:

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) 
+0

請包括你的代碼在文本中的問題(而不是圖像或鏈接)。您可以通過突出顯示代碼並單擊編輯器中的{}按鈕來獲取代碼格式(或者您可以自己縮進四個空格)。 – Blckknght

+0

對於第一個之後的任何'i',你永遠不會使用'y'。你所做的只是直接從'i'計算'd'(忽略它的前一個值),然後從'd'計算'e'。我不確定我是否明白你想要實現的是哪一部分,所以我不能真正提出解決方案。 – Blckknght

+0

哦,或許'if'條件的邏輯是倒退?你是否想在第二次迭代和後續迭代中使用if區塊的代碼,並且僅僅在第一次迭代時使用'else'?如果是這樣,請使用'i!= n'而不是'i == n'。 – Blckknght

回答

1

wikipedia's article on the subject

e

這是會覺得合適的(選擇你喜歡的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) 
+0

你是對的 – Julius

+0

我糾正了它。 – Julius