1. 我们可以将格里高利公式转换成:Π ≈ 4*(1-1/3+1/5-1/7+…)。
2. 可以将公式里面的整数1看成1/1 。
3. 直到最后一项(结束的一项)的绝对值小于给定的精度, 可以当做条件。已经知道条件可以用while循环。
解决难点:如何实现加减交替
Π/4 = 1 - 1/3 + 1/5 -1/7…
可以这样看:Π/4 = +1/1 - 1/3 +1/5 - 1/7...
分子都是1,重点看分母规律 1 3 5 7(i=1, i = i +2)
1. 设置一个开关变量:flag = 1
2. 循环每执行一次时:flag = -flag
3. 求和的变量:t = 1/d * flag
程序流程:
1. flag : 开关变量
2. fen : 分母
3. t : 每次被求和(被加)的值
4. pi : 最终的值
5. fabs() : 求绝对值函数(用之前需要导入math函数(import math)使用fabs()函数: math.fabs())
6. t = flag*1.0/fen : 中为什么使用1.0,而不是1,因为1/3 产生 0作为整数,而1.0/3 (1./3)= 0.33333... 。这样做是为了确保输出的是浮点数
7. pi = pi + t : 求和
注意:t的更新问题,如果将 t = flag*1.0/fen 放在循环的最前面,t一开始就是1,但是循环一轮后还是1,也就是用1 进行了两次计算,但flag和fen都变了两次。
代码: