为什么这个函数在python 2.7中不起作用,但在python 3.6中工作正常?

Mus*_*fa 0 python python-2.7 python-3.x

我不确定为什么函数在使用python 2.7运行时为n的所有值保持返回4,它在3.6中工作正常.例如:aproxpi(1)应为2.6666,aproxpi(2)应为3.466666.

x = 1
y = 0
pi = 0
def aproxpi(n):
    global x, y, pi
    if n <= 0:
        if y % 2 == 0:
            pi += (float(1 / x))
        else:
            pi -= (float(1 / x))
        x = 1
        y = 0
        pi2 = pi
        pi = 0
        return 4 * pi2
    n -= 1
    if y % 2 == 0:
        y += 1
        pi += (float(1 / x))
        x += 2
    else:
        y += 1
        pi -= (float(1 / x))
        x += 2
    return aproxpi(n)
Run Code Online (Sandbox Code Playgroud)

wiz*_*zz4 5

您正在Python 2中运行此程序,默认情况下除法是整数除法.

将此行添加到程序的开头:

from __future__ import division
Run Code Online (Sandbox Code Playgroud)

这将使分工更接近您的期望.