求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;
    }
}
复制代码

 

posted @   TheFloorIsNotTooHot  阅读(399)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示