如何在while循环中总结不同的值?

时间:2013-08-12 04:19:56

标签: python python-2.7 while-loop

这看起来很简单,但我很难将它付诸实践。我试图在“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)

3 个答案:

答案 0 :(得分:2)

既然你提到了阶乘,我建议你看看以下内容:

factorial using while-loop

factorial using recursion

通常,函数要么具有while循环,要么函数会调用自身(递归),但不能同时调用它们。

你的while循环只是一个if语句,由于return语句,它不会重新进入循环。你可能正在寻找这样的东西:

def estimate_pi(k):
    x = ...
    if x >= ...:
        print ...
        return x + estimate_pi(k+1)
    return 0

答案 1 :(得分:1)

这样的东西?

def estimate_pi(k, k2=0):
    ...
    while x >= 1e-15:
        k2 += x
        ...
        return estimate_pi(k, k2)

答案 2 :(得分:0)

或者,您可以将k2设为全局,但由于其他原因可能只是一个坏主意,但它会起作用

global k2
def estimate_pi(k):
  global k2
  while x >= 1e-15:
    k2+=x
    ...