0

これはとても簡単に思えますが、私はそれを機能させるのに苦労しています。次のように、「whileループ」内に新しい変数を作成して、各ループでxの値を収集しようとしていました

k2 += x

しかし、それは機能しません。では、この while ループ内のさまざまな値を合計するにはどうすればよいでしょうか? ありがとうございます。

# pi approximation by using Ramanujan Formula

import math

def estimate_pi(k):

    x = (2 * math.sqrt(2)/9801 * math.factorial(4*k) *(1103 + 26390*k))/(math.factorial(k**4)*396**(4*k))
    while x >= 1e-15:
        k += 1
        print '{:>5.15f} {:>5} {:>1}'.format(x, 'for k =', k)
        return estimate_pi(k)

estimate_pi(0)
4

3 に答える 3

2

階乗について言及したので、次のことを確認することをお勧めします。

while ループを使用した階乗

再帰を使用した階乗

一般に、関数に while ループがあるか、関数が自分自身を呼び出す (再帰) かのいずれかですが、両方はありません。

あなたの while ループは単に if ステートメントです。ステートメントのためにループに再び入ることはありませんreturn。あなたはおそらく次のようなものを探しています:

def estimate_pi(k):
    x = ...
    if x >= ...:
        print ...
        return x + estimate_pi(k+1)
    return 0
于 2013-08-12T05:34:08.183 に答える