海南驾校科目四:帮忙做两道JAVA编程题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 18:51:30
1.编写程序求1!+3!+5!+…+99!的和,其中阶乘的计算用方法实现
2.计算自然常数e=1+1/1 ! + 1/2 ! + 1/3! +1/4 ! + … + 1/n ! ,n 的取值应保证1/n ! < 10-5

帮忙做下,我所有的分都献出来了.

终于写完了,发现已经有高手比我更快一步写完了
不过我的是按要求做的,求到99

(在此非常感谢lc666111的提醒,已经改正了一下,如还有错误,请指教)
运行结果:

1!+3!+…+99!=9.620309081787802E151
请按任意键继续. . .

程序代码:
public class ComputerFactorial
{
public static void main(String[] args)
{ double sum=0;
int i;
for(i=1;i<98;i=i+2)
{sum=sum+factorial(i);}
System.out.println("1!+3!+…+99!="+sum);
}
static double factorial(int n)
{if(n==0)
return 1;
else
return n*factorial(n-1);
}
}
2,求自然对数e

运行结果:

e=2.71827876984127
请按任意键继续. . .

程序代码:
public class ComputerFactorial
{
public static void main(String[] args)
{ double sum=1;
int i;
for(i=1;factorial(i)<100000;i++)
{sum=sum+1.0/factorial(i);}
System.out.println("e="+sum);
}
static double factorial(int n)
{if(n==0)
return 1;
else
return n*factorial(n-1);
}
}

下面是我写的,第一题求到99的阶乘数据太大了,我只求到了30
你可以自己改改到99。

public static void main(String[] args) {
int sum1=0;
for(int i=1;i<30;i=i+2)
{sum1+=function(i);}
System.out.println("第一个和:"+sum1);
double sum2=1;
for(int i=1;1/((double)(function(i)))>0.00001;i++)
sum2+=1/(double)(function(i));
System.out.println("e="+sum2);

}
public static int function(int n) {//阶乘
if (n == 0) { //终止条件
return 1;
} else { //递归条件
return function(n - 1) * n;
}
}

上面的结果是错的,99的阶乘多少位?要自己设计数据结构。我以前用c做过,老师布置的作业,没有用JAVA编过