使用该系列的javae
我需要用级数来近似e:e=1+1/1+1/2!+..+1/n!这是我做的,但它拒绝编译使用该系列的javae,java,approximate,Java,Approximate,我需要用级数来近似e:e=1+1/1+1/2!+..+1/n!这是我做的,但它拒绝编译 public class Test { public static void main(String args[]) { long e = 0; for (int i = 1; i <= 100000; i++) { e += 1.0 / factorial(i); } System.out.println(e); }
public class Test {
public static void main(String args[]) {
long e = 0;
for (int i = 1; i <= 100000; i++) {
e += 1.0 / factorial(i);
}
System.out.println(e);
}
public static long factorial(long number) {
if (number <= 1) return 1;
else return number * factorial(number - 1);
}
}
公共类测试{
公共静态void main(字符串参数[]){
长e=0;
对于(int i=1;i2)代码问题:
您需要将e
定义为double
100000是一个非常大的迭代次数,您将在18次迭代中达到最大精度,并获得1.7182818284590455
。之后不会改变
这也不是e
,但这是一个单独的问题。如果你真的想得到e的近似值,你还需要在其中添加一个。或者从double e=1
开始,我会使用double而不是long来防止任何错误
100000次迭代是绝对不必要的。最多100次之后可以停止
因为e=1+1/n!从e=1开始,否则你会得到1.718
像这样的阶乘方法要简单得多,而且不必调用自身
public static double factorial(int number)
{
double factorial = 1;
while (number>1)
{
factorial*=number;
number--;
}
return factorial;
}
你的标题没有意义;它似乎没有传输十个数字,没有使用套接字,也没有使用C。至于Java问题,这段代码对我来说编译得很好,但没有成功运行。Java不仅“拒绝”编译,还会收到一条特定的错误消息,通常指向程序中的特定位置。