目标效果:
源码:
/**
* 求1+2!+3!+...+20!的和
* @author Vivinia
*
*/
public class factorial {
public static void main(String args[]) {
long sum=0,num=1; //sum用于加和,num作为每一个数阶乘后的结果
for(int i=1;i<=20;i++) {
num*=i; //num始终保留上一次阶乘的结果,所以只需要乘i
sum+=num; //每次阶乘后相加
}
System.out.println("1+2!+3!+...+20!="+sum);
}
}
一个数的阶乘等于这个数的本身乘前一个数的阶乘,所以源码中num在运算过程中,是随着I的变化依次相乘作为每一个数的阶乘项,直接参与相加即可,这个体可以使用两层for循环进行计算,但是两层for循环会增加时间复杂度。