public class Test { public static double f(int n) { if(n==1) return 1; return n*f(n-1); } public static void main(String[] args) throws Exception { int n = 20; double sum = 0; for(int i=1;i <=n;i++) { sum += 1 / f(n); } System.out.println("sum = "+sum); } }
public class TestJiecheng { public Long jieCheng(int n){ long i = (long)1; if(n==1){ return i; }else{ return n*jieCheng(n-1); } } public static void main(String[] args) { TestJiecheng tj = new TestJiecheng();
double sum = 0;
for(int i = 1;i<=20;i++){
double a = 0; double c = (double)tj.jieCheng(i); a = 1/c; sum = sum + a; }
System.out.println(sum); }}好像和上面差不多~
下面为程序:不过你的公式有问题,e=1+1/1!+1/2!+1/3!+1/4!+…1/n! ;开始我按你的错误公式来算,结果总不对.public class CalculateE { public static void main(String[] args) { //在此我们假设N=10000,理论上n可以取无限大,在此为了速度,故取10000. long N = 10000; BigDecimal result = new BigDecimal("1"); BigInteger cal = new BigInteger("1");//分母 BigDecimal fenZi = new BigDecimal("1");//分子 for (long i = 1; i <= N; i++) { //将大整数转为大数字 BigDecimal dCal=new BigDecimal(cal); result = result.add(fenZi.divide(dCal,20,BigDecimal.ROUND_HALF_UP)); //计算N!的阶乘 cal = cal.multiply( new BigInteger(Long.valueOf(i + 1).toString())); } System.out.println(result.doubleValue()); } }
public static double f(int n) {
if(n==1)
return 1;
return n*f(n-1);
}
public static void main(String[] args) throws Exception {
int n = 20;
double sum = 0;
for(int i=1;i <=n;i++) {
sum += 1 / f(n);
}
System.out.println("sum = "+sum);
}
}
public class TestJiecheng { public Long jieCheng(int n){
long i = (long)1;
if(n==1){
return i;
}else{
return n*jieCheng(n-1);
}
}
public static void main(String[] args) {
TestJiecheng tj = new TestJiecheng();
double sum = 0;
for(int i = 1;i<=20;i++){
double a = 0;
double c = (double)tj.jieCheng(i);
a = 1/c;
sum = sum + a;
}
System.out.println(sum); }}好像和上面差不多~
下面为程序:不过你的公式有问题,e=1+1/1!+1/2!+1/3!+1/4!+…1/n! ;开始我按你的错误公式来算,结果总不对.public class CalculateE { public static void main(String[] args) {
//在此我们假设N=10000,理论上n可以取无限大,在此为了速度,故取10000.
long N = 10000;
BigDecimal result = new BigDecimal("1");
BigInteger cal = new BigInteger("1");//分母
BigDecimal fenZi = new BigDecimal("1");//分子 for (long i = 1; i <= N; i++) {
//将大整数转为大数字
BigDecimal dCal=new BigDecimal(cal);
result = result.add(fenZi.divide(dCal,20,BigDecimal.ROUND_HALF_UP));
//计算N!的阶乘
cal = cal.multiply(
new BigInteger(Long.valueOf(i + 1).toString()));
}
System.out.println(result.doubleValue());
}
}