python

2016-03-19 12 views
-3

içinde devam eden kesir ilk n + 1 terimlerini kullanarak 'e' için bir yaklaşım bulma wiki içinde [a1, a2, a3...] devam eden kesir örneğini takip etmeye çalıştım. Ben Programı çalıştırdığınızda ben 2.727272...75 olarak n = 2 için sonucu elde etmek mümkün ama ben orada iki çıkışları ve onlar düşüktür n = 3 çalıştığınızda (2.394 ve ikinci çizgi 2.3333 ... alma) Ben eklemem gerekiyor emin değilim y =... satırına başka bir ayar. n'u her değiştirdiğimde i -1+'un başka bir grubunu y'a eklemek zorunda mıyım? Ve neden iki satırlık cevap alıyorum? Döngüyü nasıl yaptığım sorun mu var? wikipedia's article on the subject itibarenpython

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

ekleyiniz İşte

kod bu Sorunuzdaki metni (metin olarak değil) bir görüntü veya bir bağlantı olarak. Kod biçimlendirmesini vurgulayarak ve editördeki '{}' düğmesini tıklatarak alabilirsiniz (veya her şeyi kendiniz ekstra dört boşlukla girebilirsiniz). – Blckknght

+0

Birincisinden sonra herhangi bir 'i' için asla 'y' kullanmazsınız. Tek yapmanız gereken, "i" yi (önceki değerini göz ardı ederek) "d" yi hesaplamak ve daha sonra "e" yi "d" 'den hesaplamaktır. Uygulamaya çalıştığınız kesimin devam ettiğinden emin olduğumdan emin değilim, bu yüzden gerçekten bir düzeltme öneremiyorum. – Blckknght

+0

Oh, belki de 'if' durumunun mantığı geriye doğru mu? İkinci ve tüm iterasyonlar için 'if 'bloğunun kodunu ve yalnızca ilk iterasyon için' else'i kullanmak ister misiniz? Eğer öyleyse, 'i == n' yerine' i! = N' kullanın. – Blckknght

cevap

1

,

e

Bu uygun (beğeninize n çekme) hissederdiniz budur:

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

Size haklısınız – Julius

+0

Ben düzeltildi. – Julius