写一个JAVA题目

来源:百度知道 编辑:UC知道 时间:2024/07/14 13:11:33
编写一个完整的Java application程序,计算1+1/2!+1/3!+1/4!+…的前20项的和,并输出求出的和。

class Example{
public static void main(String args[]){
double sum=0,a=1;
int i=1;
while(i<=20){
sum=sum+a;
i=i+1;
a=a*(1.0/i);
}
System.out.println("sum="+sum);
}
}

是否可以这样:
class qiuhe{
int A(int a){
if(a==1) return 1;
if(a>1) return B(a)+A(a-1);
}
int B(int b){
if(b==1) return 1;
if(b>1) return B(b-1)*1/b;
}
public static void main(String []args){
System.out.println(A(20));
}

}

这个题目的重点是计算效率吧,20项似乎有点少,说明不了问题,如果项非常多应该考虑变换一下多项式的形式在计算。
普通的非递归算法如下:

public class AddFactorials {
public static void main(String[] args) {
int number = 20;
double[] factorials = new double[number];
factorials[0] = 1;
for (int index = 1; index < number; index++) {
factorials[index] = factorials[i