编写应用程序,求1!十2!十……十10!的和java
时间: 2025-04-05 20:22:39 浏览: 23
### Java 实现阶乘累加(1! + 2! + ... + 10!)
以下是基于提供的引用内容以及标准的 Java 编程实践编写的解决方案:
#### 使用 `for` 循环实现
可以通过嵌套的 `for` 循环来分别计算每个数的阶乘并将它们相加。这种方法简单直观。
```java
public class FactorialSum {
public static void main(String[] args) {
int n = 10; // 阶乘上限
long sum = 0;
for (int i = 1; i <= n; i++) {
sum += factorial(i);
}
System.out.println("1! + 2! + ... + 10! 的和为:" + sum);
}
private static long factorial(int number) {
long result = 1;
for (int i = 1; i <= number; i++) {
result *= i;
}
return result;
}
}
```
上述代码定义了一个辅助函数 `factorial` 来计算单个数字的阶乘[^1],并通过外层循环将其结果逐步累加至总和变量 `sum` 中[^3]。
---
#### 使用 `while` 循环实现
如果更倾向于使用 `while` 循环,则可以按照如下方式编写程序:
```java
import java.util.Scanner;
public class FactorialWhileLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要计算的最大阶乘项:");
int n = scanner.nextInt();
long sum = 0;
int currentNumber = 1;
while (currentNumber <= n) {
sum += calculateFactorial(currentNumber);
currentNumber++;
}
System.out.println("1! + 2! + ... + " + n + "! 的和为:" + sum);
}
private static long calculateFactorial(int num) {
long factResult = 1;
int counter = 1;
while (counter <= num) {
factResult *= counter;
counter++;
}
return factResult;
}
}
```
此版本同样实现了阶乘累加功能,其中内部逻辑依赖于两个独立的 `while` 循环结构。
---
#### 性能优化版
考虑到大数值下的性能问题,在实际应用中可采用动态规划的思想减少重复运算次数。即每次仅需将前一项的结果乘以当前索引来得到新的阶乘值,从而显著提升效率。
```java
public class OptimizedFactorialSum {
public static void main(String[] args) {
final int MAX_N = 10;
long cumulativeProduct = 1;
long totalSum = 0;
for (int k = 1; k <= MAX_N; ++k) {
cumulativeProduct *= k; // 动态更新累积积
totalSum += cumulativeProduct;// 更新总体和
}
System.out.printf("1! + 2! + ... + %d! 的和为:%d%n", MAX_N, totalSum);
}
}
```
该方案避免了多次调用递归或冗余迭代操作,因此更加高效[^4]。
---
### 结论
以上三种方法均可有效解决给定范围内的阶乘求和问题。具体选择取决于个人偏好及项目需求场景的不同约束条件。
阅读全文
相关推荐



















