所以我遇到的问题是:
数学 常数π(pi)是一个无关数,其值近似
3.1415928...
π的精确值等于以下无限和:π = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ...
我们可以得到一个好的 通过计算前几个项的总和来近似π
。写 函数approxPi(error)
,它将浮点值作为参数 通过计算错误并在错误中近似常量π
以上总和,逐项,直到差异的绝对值 在当前总和与前一个总和之间(少一个术语)是 不比错误大。一旦函数发现差异是 小于错误,它应该返回新的总和。
正确输入的示例:approxPi(0.01)
应返回3.1465677471829556
我的代码:
def approxPi(error):
i=5 #counter for list appending
lst = [4,(-4/3)] #list values will be appended to
currentSum = sum(lst) #calcs sum of the list
previousSum = sum(lst[:len(lst)-1]) #calcs sum of list with one less term
while abs(currentSum - previousSum) > error: #while loop for error value
if len(lst) % 2==0: #alternates appending positive or negative value
lst.append((4/i)) #appends to list
else:
lst.append((-4/i))
i+=2 #increments counter
return currentSum #returns sum of the whole list once error value has been reached
当我运行代码时,我陷入循环,直到内存使用率达到100%并且我的系统锁定。关于我做错了什么的提示?这是一个家庭作业问题所以请不要只是发一个答案。