题目出自:http://bbs.blueidea.com/thread-2802816-1-1.html
1. 编写程序,计算1!+2!+3!+…+n!的和,其中阶乘的写一个方法实现。要求写出测试代码并测试通过。 package abc;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class TestSum {
private static long sum = 0;
public static void main(String[] args) throws Exception{
TestSum ts = new TestSum();
boolean bl = true;
int n = 0;
while (bl) {
System.out.println("计算1!+2!+3!+…+n!,请输入n的值:");
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String str = br.readLine();
boolean b = str.matches("\\d*");
if (!b) {
System.out.println("您输入的不是数字!");
continue;
}
n = Integer.parseInt(str);
if (n >10 || n < 1) {
System.out.println("请输入小于10并且大于0的数字!");
continue;
}
bl = false;
}
System.out.println(ts.mysum(n));
}
public long mysum(int n) {
int i = n;
long temp = n;
for(;i>1;i--){
temp = temp*(i-1);
}
sum = sum + temp;
if (n>1) {
mysum(n-1);
}
return sum;
}
}
|