算法基础之阶乘

文章介绍了如何使用Java编程语言实现计算1到N的阶乘,提供了一个基础版本和一个优化版本,后者通过记忆上一个数的阶乘来提高效率。

/**

  • 给定一个参数N,
  • 返回: 1! + 2! + 3! + 4! + … + N! 的结果
    */
public class Factorial {


    /**
     * 每一次都单独算i的阶乘,再加上i-1的阶乘
     * @param N
     * @return
     */
    public static long sumFactorial(int N){
        long ans = 0;
        for (int i = 1; i <= N; i++) {
            ans += factorial(i);
        }
        return ans;
    }

    /**
     * 计算i的阶乘
     * @param i
     * @return
     */
    private static long factorial(int i) {
        long ans = 1;
        for (int i1 = 1; i1 <= i; i1++) {
            ans*=i1;
        }
        return ans;
    }

    /**
     * 用一个变量记住上一个数的阶乘,当前数的阶乘只需上一个数的阶乘再乘上当前数
     * @param N
     * @return
     */
    public static long sumFactorial1(int N){
        long ans = 0;
        long tmpI = 1;
        for (int i = 1; i <= N; i++) {
            tmpI = tmpI*i ;
            ans += tmpI;
        }
        return ans;
    }

    public static void main(String[] args) {
        int N = 10;
        System.out.println(sumFactorial(N));
        System.out.println(sumFactorial1(N));

    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值