求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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」