我正在使用python3.7,我的部分任务是定义Wallis近似pi的方法。我是一个数学系的学生,不适合做计算机科学,真的需要一些帮助,这值我总成绩的40%,我不能做更多没有正确定义这一点。以下是我目前编写的代码:
def pi_wallis(n):
z=1
for k in range(n):
a=(2.0*k)//((2.0*k)-1.0)
b=(2.0*k)//((2.0*k)+1.0)
z*=(a*b)
return z
不管我输入什么,我总是得到-0.0,有人能解释为什么吗?我第一次得到z=0,并且试着改成z=2,仍然得到-0.0
您使用的是整数除法(
//
),这意味着一个分数(例如,第一次迭代中的2/3
)足以使整个序列为0。你知道吗您应该使用浮点除法(
/
)。如果从1开始序列并在n + 1
中结束(因为range
在结尾是独占的),也会更清楚。你知道吗相关问题 更多 >
编程相关推荐