求1到n的阶乘累加和
作者:互联网
package class01; /** * 给定一个参数N, * 返回:1!+2!+3!+...+N! 的结果。 * (即:求1的阶乘到N的阶乘的累加和。) */ public class Code01_SumOfFactorial { public static void main(String[] args) { int N = 10; System.out.println(f1(N)); System.out.println(f2(N)); } //方法1:先求单个数的阶乘,再把每一个单个数的阶乘,累加起来。 public static long f1(int N) { long ans = 0; for (int i = 1; i <= N; i++) { ans += factorial(i);//把每一个数的阶乘,累加。 } return ans; } public static long factorial(int N) {//求N的阶乘 long ans = 1; for (int i = 1; i <= N; i++) { ans *= i; } return ans; } //方法2:用一个变量cur,来记录每一个数的阶乘。在用ans,来记录1的阶乘,到N的阶乘的累加和。 public static long f2(int N) { long ans = 0; long cur = 1; for (int i = 1; i <= N; i++) { cur = cur * i;//没有写成cur *= i;为了更好地理解:上一轮的阶乘(等号右边的cur),乘上这一轮的数字(即i),就是这一轮的阶乘(等号左边的cur)。 // 也就是说,每一个当前阶乘的结果,都是踩着上一步的结果,乘上i得来的。(复用了上一步的结果)。 ans += cur; } return ans; } }
标签:f1,int,System,累加,阶乘,public 来源: https://www.cnblogs.com/TheFloorIsNotTooHot/p/16345785.html