题解
计算圆周率
1 条题解
-
0
解题思路
题目用格雷戈里-莱布尼茨级数计算圆周率:
π = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 - ...也就是第 i 项是
4 ÷ 奇数,奇数项相加、偶数项相减。这样不断迭代,每一项都比上一项更接近 π。题目要求迭代 500000 次后保留 6 位小数输出。用一个
double变量累加,i从 1 到 500000,每一项是4.0 / (2*i-1),i是奇数就加、偶数就减。最后用printf("%.6lf")输出 6 位小数。参考代码
#include <iostream> #include <cstdio> using namespace std; int main() { double pi = 0; // π = 4/1 - 4/3 + 4/5 - 4/7 + ... 一直迭代500000次 for (int i = 1; i <= 500000; i++) { double t = 4.0 / (2 * i - 1); // 第i项:4除以奇数 if (i % 2 == 1) pi += t; // 奇数项用加 else pi -= t; // 偶数项用减 } printf("%.6lf\n", pi); // 保留6位小数 return 0; }复杂度分析
迭代 n 次(n=500000),每次常数运算,时间复杂度 O(n);额外空间复杂度 O(1)。
- 1