《The Coder's Apprentice》习题8.3:Gregory-Leibnitz级数求π代码正确性咨询
代码正确性验证结论
你的更新后代码完全正确,完全符合题目要求的Gregory-Leibnitz级数计算π近似值的逻辑。
验证依据
- 逻辑匹配:
- 你设置的计数器
c从1开始,奇数项加正的奇数分母倒数、偶数项加负的奇数分母倒数,刚好对应级数1/1 − 1/3 + 1/5 − 1/7 + ...的符号规则 - 分母
i每次加2,严格取1、3、5、7...的奇数序列 - 循环执行n次,刚好计算括号内的n项,最后乘以4得到近似π值,和题目要求完全一致
- 小样本测试验证:
- 当n=1时,输出为
4.0,符合预期 - 当n=2时,输出为
4*(1-1/3) ≈ 2.6666666666666665,符合预期 - 当n=3时,输出为
4*(1-1/3+1/5) ≈ 3.466666666666667,符合预期
可选优化建议(不影响正确性,仅简化代码)
你当前代码中if和elif分支里的i=i+2、c=c+1是重复逻辑,可以提取到分支外,简化后的代码和原逻辑完全等效:
def leibnitz(n): tot = 0 i = 1 c = 1 for _ in range(n): if c % 2 != 0: tot += 1.0/i else: tot -= 1.0/i i += 2 c += 1 return tot * 4 print(leibnitz(98))
你和标准答案的差异仅为实现细节不同,功能完全符合要求。
内容的提问来源于stack exchange,提问作者PwNzDust
相关产品推荐
相关产品推荐

