是否可以在一种方法中计算1000次迭代中的欧拉数,我是否需要首先计算因子?
这是我的代码:
import java.math.BigDecimal;
public class EulerNumber {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
}
System.out.println("e = " + e);
}
private static double Euler() {
return 0;
}
}
答案 0 :(得分:1)
是的,可以计算超过2300个正确数字的近似值,部分总和为1000个术语。误差小于2/1000! (幅度为1/300 ^ 1000)
不,没有必要计算阶乘,在任何情况下,都应该避免使用显式阶乘函数,只需更新前一个术语,或者从上一个术语开始使用类似Horner的方案。
答案 1 :(得分:1)
非常简单,如果我理解正确,你需要在1000次迭代中计算euler数,而不是计算1000次,所以for循环应该转移到Euler函数中。
public class EulerNumber {
public static void main(String[] args) {
System.out.println("e = " + Euler());
}
private static double Euler() {
double e=1;
double f=1;
for ( int i=1; i <= 1000; i++) {
f = f * (1.0 / i);
if ( f == 0 ) break;
e += f;
}
return e;
}
}
e是到目前为止的估计的欧拉数,f是在下一次操作中添加的分数(1 / n!)。你不必计算n!每一次,最好在你继续计算它。我已经检查并知道1000对于双精度来说太高了,因为在我的计算机中经过178次迭代后f收敛到0。所以剩下的过程就没有必要了。