我知道这很可能是一段非常简单的代码,但我似乎不知道它到底有什么问题。我每次都得到0作为答案,如果我试图直接使pi=pi,它会给我一个“float”错误,并说它不可调用。在
def pi(n):
result = 0;
N= int(input("Input desired iterations: "))
M = 1.0
denom = 2.0
Pi = 3.0
for I in range (1, N+1):
Pi += ((4.0/(denom*(denom+1)*(denom+2.0)))*M)
denom += 2.0
M *= -1.0
return n == Pi
m = int(input("M: "))
actual_pi =3.1415926535897932384626433832795028841971693993751058209749445923078164062
for i in range(0, 50000) :
val = pi(i)
if (val - actual_pi) <= (10 ** m):
print(i)
break
我认为这应该是正确的代码,但是除了0我什么也得不到。This is the question I'm trying to solve. It also has the answer I should be getting.
编辑:我只是注意到我没有在照片中包括正确的号码。是24834。在
解决这个问题的一个简单方法是为“Nilakantha Series”创建一个生成器,然后只
enumerate()
累积项,直到出现错误:注意:如果您取消了import的注释并删除了
^{pr2}$Decimal = float
,那么您将得到:返回表达式
n == Pi
始终是False
,它在算术上是0
。只需返回Pi
。在EDIT2:输出仍然为0的原因是Pi(0)-actualPi<;10**M表示任何非负M
还有其他问题,可以通过将Pi测试放在Pi函数的循环中来避免,如下所示。在
相关问题 更多 >
编程相关推荐