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.
一次类推
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;
}
上面的方法全部本质一样,时间复杂度都为O(N^2),没本质区别,随便用一个就行了。你想速度快的把复杂度降为O(N)的就用个数组把阶乘结果保留,最后加法运算。
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);
}
}
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;
}