一、主要思路
1、假设PI代表圆周率;
2、有公式可知:
PI / 4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 + ...
它是一个级数。
缺点:收敛速度很慢,计算精度高的圆周率很消耗时间。
二、具体代码(C语言)
#include<stdio.h>
// 数学库
#include<math.h>
// 用级数来求圆周率
double doPI(){
// 存放所有项的和
double PI = 0.0;
// 确定正负,和每一项相乘改变方向
double direction = 1.0;
// 第一项的分母
double mother = 1.0;
// 每一项的结果
double item = 0;
// 第几项,当前是第一项
int sequence = 1;
// 精度
double accuracy = 1E-10;
do{
// 计算某一项的结果
item = direction * (1 / mother);
// 改变项数,代表下一项
sequence++;
// 改变下一项的方向
// 偶数是负,奇数是正,不包括第一项。
if(sequence % 2 == 0){
direction = -1.0;
}else{
direction = 1.0;
}
// 计算下一项的分母
mother = mother + 2.0;
// 结果相加
PI = PI + item;
// 如果大于10的负7次方幂,就继续循环,否则退出循环
}while(fabs(item) > accuracy);
// 计算完毕,乘以4;
PI = PI * 4.0;
// 返回结果
return PI;
}
int main(){
printf("通过级数获得的圆周率的值为:%lf \n", doPI());
}