【发布时间】:2018-04-09 05:41:42
【问题描述】:
我不确定为什么在使用 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)
【问题讨论】:
-
在 3.6.4 中工作正常,无法重现。旁注,不需要
globals,只需在范围内定义即可。 -
对不起,“在范围内定义”是什么意思,这是 python 的新手,我不明白这是什么意思。谢谢
-
这意味着你不要像全局变量一样定义它们,因为这些变量只在函数中使用。如果你愿意,可以这样声明它们:
x, y, pi = 1, 0, 0 -
除此之外。
return aproxpi(n)不是一个好主意,除非你想要一个递归函数。
标签: python python-3.x python-2.7