2016-09-30 6 views
0

私はPythonの関数の概念を学んでおり、ちょっとしたアドバイスを使うことができます。関数の和集合 - 以前の回答を継続的に追加しますか?

入力1から20に対して代数関数m(i) = (i)/(i + 1)を使用するプログラムを作成しようとしています。これまでのところ、私はそれを実現しましたが、今度は新しい出力ごとにすべての以前の出力をまとめたいと思います。私はこれの数学的な概念を把握していない可能性があり、それが私のコードで正しく理解できない理由です。

理想的には、これは私が取得しようとしている結果表のようになります。

i  m(i)  

1  0.50 
2  1.17 
... 
19 16.40 
20 17.35 

現在、私が持っているものです。

def equation(i): 
    mi = ((i)/(i + 1)) 
    return mi 

def main(): 
    for i in range(1,21): 
    print(format(i, '2d')," ",format(equation(i), '.2f')) 

main() 

私は貝に見ている出力は次のとおりです。

1  0.50 
2  0.67 
3  0.75 
4  0.80 
5  0.83 
6  0.86 
7  0.88 
8  0.89 
9  0.90 
10  0.91 
11  0.92 
12  0.92 
13  0.93 
14  0.93 
15  0.94 
16  0.94 
17  0.94 
18  0.95 
19  0.95 
20  0.95 

私は良いスタートを切っているように感じますが、新しい行ごとにどのようにm(i)を一緒に追加できますか?私が掲示した「理想」の例のように、それは1.17を与える0.5 + 0.67をとります。

ありがとうございます!

答えて

0

ことは、これを試してみてください:

def equation(i): 
    if i <= 0: 
     return 0 
    mi = ((i)/(i + 1)) 
    return mi + equation(i - 1) 
+0

私はそれが単純だったとは信じられません、ありがとうHydex!今すぐコードの部分を勉強し、それがなぜ機能するのかを理解する必要があります – Norr

+0

再帰関数の詳細については、このリンクを参照してください[python-course](http://www.python-course.eu/recursive_functions.php )と[Wiki](https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3/Recursion) – Hydex

0

あなただけの式(I)

の値を保存するアキュムレータを必要とするここに私のソリューションです:

def equation(i): 
    mi = ((i)/(i + 1)) 
    return mi 

acc = 0 
for i in range(1,21): 
    acc += equation(i) 
    print(format(i, '2d')," ",format(acc, '.2f')) 
0

あなたはこのような何かを行うことができます。

#!/usr/bin/python 

def equation(i): 
    mi = (float(i)/(i + 1)) 
    return mi 

def main(): 
    sumOfMi = 0 
    for i in range(1,21): 
     sumOfMi+= equation(i) 
     print(format(i, '2d')," ",format(sumOfMi, '.2f')) 

main() 
0

あなたは発電機でそれを行うことができます:

def equation(i): 
    n = 0 
    tot = 0 
    while n < i: 
     n += 1 
     mi = n/(n+n) 
     tot += mi 
     yield n, tot 

def main(): 
    for i, mi in equation(21): 
     print(format(i, '2d')," ",format(mi, '.2f')) 
0
def function(i): 
    return i/(i+1) 

e = 0 
for i in range(1, 21): 
    print(i, end=' ') 
    e += function(i) 
    print(e) 

あなただけの機能からvariable.Good運への復帰を結果インクリメントする必要があるようです!

関連する問題