1、编写一个Java程序,计算并输出1+2!+3!+…+10!的值。

如题所述

public class jiecheng {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int sun=0;
int jc=1;
for(int i=1;i<=10;i++)
{
jc=jc*i;
sun+=jc;
}
System.out.print(sun);
}

}
解释:
当i=1;进行第一次循环 jc=jc*i=1*1=1=1!,sun+=jc=0+1=1!;
当i=2;进行第二次循环,jc=jc*i=1*2=2!,sun+=jc=1!+2!=3;
当i=3,进行第三次循环,jc=jc*i=2!*3=3!,sum=1!+2!+3!=9.
一次类推
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-10
public static void main(String[] args) {
int res = factorialSum(10);
System.out.println(res);
}

public static int factorialSum(int num) {//求和
int res = 0;
for (int i = 1; i <= num; i++) {
res += factorial(i);
}
return res;
}

public static int factorial(int num) {//每个数的阶乘
int result = 1;
for (int i = 1; i <= num; i++) {
result = result * i;
}

return result;
}
第2个回答  2011-10-10
上面的方法全部本质一样,时间复杂度都为O(N^2),没本质区别,随便用一个就行了。你想速度快的把复杂度降为O(N)的就用个数组把阶乘结果保留,最后加法运算。
第3个回答  推荐于2018-02-28
test
{
public static void main(String args[])
{
long sum=0,a=1;
long i=1;
while(i<=10)
{
if(i>=1)
sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}本回答被提问者和网友采纳
第4个回答  2011-10-10
int sum=0;
for(int n=1;n<10;n++)//1--10 10个数
{
jc=1;
for(int i=1;i<=n;i++)//每个算阶乘
{
jc=jc*i;
}
sum+=jc;
}
相似回答