diff --git a/tyro/src/main/java/Code2_SumOfFactorial.java b/tyro/src/main/java/Code2_SumOfFactorial.java new file mode 100644 index 0000000..f1a7a88 --- /dev/null +++ b/tyro/src/main/java/Code2_SumOfFactorial.java @@ -0,0 +1,43 @@ +/** + * 给定一个参数N,返回1!+2!+3!+4!+…+N!的结果 + * 1 + 1*2 + 1*2*3 +....+1*...*N + */ +public class Code2_SumOfFactorial { + /** + * 按照最直接的逻辑计算 + */ + public static long factorial(int N){ + long ret = 1; + for(int i =1; i<= N; i++){ + ret *= i; + } + return ret; + } + public static long f1(int N){ + long ret = 0; + for(int i =1; i <= N;i++){ + ret += factorial(i); + } + return ret; + } + + /** + * 优化流程,每次加上一次阶乘的结果 + * @param N + */ + public static long f2(int N){ + long last = 1; + long ret = 0; + for(int i =1; i<= N; i++){ + last = last*i; // 记录上一次计算的结果 + ret += last; + } + return ret; + } + + public static void main(String[] arg){ + int N = 10; + System.out.println(f1(N)); + System.out.println(f2(N)); + } +}