<pre><code>def wallis(n):
pi = 0.0
for i in range(n):
left = (2 * i)/(2 * i - 1)
right = (2 * i)/(2 * i + 1)
total = left * right
pi = pi + total
return pi
print wallis(1000)
print wallis(10000)
print wallis(100000)
</code></pre>
<p>我准确地复制了公式,但我一直得到0作为输出。有人能告诉我我做错了什么吗。Python2.7。</p>
<p>公式的链接是<a href="http://en.wikipedia.org/wiki/Wallis_product" rel="nofollow">here</a></p>
<p>只是补充一点,你可以用一种Python的方式来做这件事,看起来也更接近数学表达式。(这里.25负责浮点转换)</p>
<pre><code>def product(iterator):
return reduce(lambda x, y: x * y, iterator)
print 2 * product(i * i / (i * i - .25) for i in xrange(1, 1000))
</code></pre>