这看起来很简单,但我很难将它付诸实践。我试图在“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)
答案 0 :(得分:2)
既然你提到了阶乘,我建议你看看以下内容:
通常,函数要么具有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
...