用java编写程序计算1 + 1/2! +....+ 1/n!

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入1 个正整数n,计算 s 的前n项的和。
s = 1 + 1/2! +....+ 1/n!
例:括号内是说明
输入:
2 (repeat=2)
2 (n=2)
10 (n=10)
输出:
1.5
1.7183

import java.util.Scanner;
public class Test40021{
public static void main(String args[]){
int ri, repeat;
int i,n;
float s,t;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*--------------------*/
System.out.println((int)(s*10000+0.5)/10000.);
}
}
}

/*.......*/内填写:
s = compute(n);
下面是2个辅助的递归方法
private static float compute(int n){
if(n==1) {
return 1;
}else {
return (float) 1/f(n) + compute(n-1);
}
}
public static int f(int n) {
return n == 1 ? 1 : f(n-1) * n;
}我没有测试环境,所以不知道是不是能运行正确 你可以试试
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-24
在main类外写一个类如:
public float getSum(int repeat ){
if(repeat=1){
return 1;
}else{
return 1/(float)getSum(repeat-1)+1/(float)repeat;
}
}

在main方法中用代码:
Test40021 t=new Test40021();
System.out.println(t.getSum(repeat));
相似回答