跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

使用 Java 计算 1 到 20 的阶乘之和

介绍如何使用 Java 语言计算从 1 到 20 的阶乘之和。首先解释了阶乘的基本概念,即 n! 为所有小于及等于该数的正整数乘积。接着提供了两种实现方案:基础版通过循环调用阶乘函数累加,优化版则利用动态规划思想在单次循环中同时更新阶乘值和总和,避免重复计算。代码示例展示了完整的类结构,包括主方法和阶乘计算方法。注意事项中提到由于结果数值较大,建议使用 long 类型存储,若需处理更大范围可考虑 BigInteger 类。最终输出结果为 2561327494111820313。

古灵精怪发布于 2026/3/23更新于 2026/9/467 浏览

使用 Java 计算 1 到 20 的阶乘之和

在编程中,计算阶乘是一个常见的问题。阶乘(Factorial)通常表示为 n!,定义为所有小于及等于该数的正整数的乘积。

1. 阶乘的基本概念

阶乘在数学中有着广泛的应用,尤其是在组合数学、概率论等领域。计算阶乘的一个简单方法是使用循环或递归。然而,对于较大的数,递归可能会导致栈溢出,因此推荐使用循环来实现。

2. Java 代码实现

2.1 基础实现

首先,我们需要一个函数来计算单个数的阶乘,并累加求和。

public class FactorialSum {
    public static void main(String[] args) {
        long sum = 0;
        for (int i = 1; i <= 20; i++) {
            sum += factorial(i);
        }
        System.out.println("1 + 2! + ... + 20! 的和为:" + sum);
    }

    public static long factorial(int n) {
        if (n == 0 || n == 1) return 1;
        long result = 1;
        for (int i = 2; i <= n; i++) result *= i;
        return result;
    }
}

2.2 性能优化

为了提高性能,可以使用动态规划的思想,避免重复计算阶乘。在循环中直接维护当前阶乘值。

public class FactorialSumOptimized {
    public static void main(String[] args) {
        long sum = 0;
        long factorial = 1;
        for (int i = 1; i <= 20; i++) {
            factorial *= i;
            sum += factorial;
        }
        System.out.println("1 + 2! + ... + 20! 的和为:" + sum);
    }
}

运行结果均为:2561327494111820313

3. 代码说明与注意事项

  1. 数据类型选择:由于 20! 数值很大,使用 long 类型存储。若需处理更大范围,建议使用 BigInteger 类。
  2. 逻辑说明:主方法遍历 1 到 20,调用阶乘方法累加。优化版在单次循环中完成阶乘累积和总和累积。
  3. 输入验证:本程序假设输入范围固定,未包含额外输入验证。

目录

  1. 使用 Java 计算 1 到 20 的阶乘之和
  2. 1. 阶乘的基本概念
  3. 2. Java 代码实现
  4. 2.1 基础实现
  5. 2.2 性能优化
  6. 3. 代码说明与注意事项

更多推荐文章

查看全部
  • 基于Canvas和Web Audio API的交互式烟花动画网页游戏
  • LLaMA Factory 部署与微调:从零到能跑
  • RetinaFace+CurricularFace 人脸识别安防系统原型开发
  • Linux 内存分布结构:物理、虚拟与进程布局
  • OpenClaw 龙虾机器人 Windows 系统部署指南
  • Ubuntu 24.04 命令行安装中文语言环境指南
  • 使用 Whisper 构建企业级离线语音转录系统
  • OpenClaw 安装与飞书机器人配置实战指南
  • Python 27 个常见问题解答与核心概念解析
  • SketchUp 3D 打印 STL 导出全流程指南
  • C++ 哈希表原理与 STL 容器实现详解
  • 2026 年 3 月 23 日技术资讯:AI Agent 安全与 Python 性能进展
  • VS Code 前端开发必备插件推荐及配置教程
  • Ubuntu 24.04 修改 IP 地址指南:图形界面与命令行方法
  • PromptArmor: 简单有效的提示注入防御方法
  • python-can 模块使用记录
  • 相干伊辛机在医疗及医疗 AI 领域的应用前景
  • 具身机器人软件系统架构详解
  • Prompt 技术核心指南:从基础指令到高级推理方法
  • Manus vs OpenClaw:云端托管与开源本地化架构原理对比

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online