我用wallis方法的pi近似不起作用,我也不知道发生了什么

2024-10-02 18:14:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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


Tags: 方法代码inforreturn定义defpi
1条回答
网友
1楼 · 发布于 2024-10-02 18:14:01

您使用的是整数除法(//),这意味着一个分数(例如,第一次迭代中的2/3)足以使整个序列为0。你知道吗

您应该使用浮点除法(/)。如果从1开始序列并在n + 1中结束(因为range在结尾是独占的),也会更清楚。你知道吗

def pi_wallis(n):
    z = 1
    for k in range(1, n + 1):
        a = (2.0*k) / ((2.0*k)-1.0)
        b = (2.0*k) / ((2.0*k)+1.0)
        z *= a*b
    return z

相关问题 更多 >