[英]Calculate pi using Leibniz series
我是java的新手,我正在尝试制作一个使用带有100000次迭代的Leibniz系列计算pi的程序。 我需要定义一个方法并调用它。 当我运行程序时,我没有得到结果。 有人可以告诉我我在做什么错,并帮助我重回正轨吗?
public class pi { public static void main(String[] args) { double pi = computePi(100000); } public static double computePi(int count) { double pi = 0; count = 100000; for(int i =0; i<count; i++) { pi = Math.pow(-1,i)/(2*i+1); } return pi; } }
如果要将其打印到控制台,请尝试:
public static void main(String[] args)
{
System.out.println("pi = " + calculatePi(100000));
}
不过,我不能说太多。
您的代码有几处错误。 首先,main中的函数调用与computePi函数的名称不匹配。 其次,在for循环中,您需要在每次迭代期间重新分配pi变量的值。 您需要做的是取所有迭代的总和。 因此,您需要保留pi的先前值并向其添加当前商。 最后,莱布尼兹求和公式返回pi / 4,而不是pi。 因此,您应该将返回值更改为pi * 4。
public static void main(String[] args)
{
double pi = computePi(100000);
System.out.println(pi);
}
public static double computePi(int count)
{
double pi = 0;
for(int i = 0; i < count; i++)
{
pi += Math.pow(-1,i)/(2*i+1);
}
return pi * 4;
}
最后一点:传递参数时,不一定需要将其还原为变量。 只需使用参数值即可。
您的代码中存在许多问题。 首先,您不会打印函数的结果。 另外,您的实现似乎已关闭。 我想你想
public static void main(String[] args) {
double pi = computePi(100000);
System.out.println(pi);
}
public static double computePi(int count) {
double pi = 1;
for (int i = 3; i < count; i += 4) {
pi = pi - (1 / (double) i) + (1 / (double) (i + 2));
}
return pi * 4;
}
输出是
3.141612653189785
或者您可以使用内置的Math.PI
常量,
System.out.println(Math.PI);
输出是
3.141592653589793
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.