对于给定的正整数n(n>1),采用蛮力法求1!+2!+3!+...+n!,并改进这种算法提高效率
时间: 2023-12-01 18:42:30 浏览: 213
1!+2!+..n!
以下是对于给定的正整数n(n>1),采用蛮力法求1!+2!+3!+...+n!的算法以及改进算法的实现:
1. 蛮力法求解
```java
int n = 5; // 给定的正整数n
int sum = 0; // 用于存储1!+2!+3!+...+n!的和
int factorial = 1; // 用于存储当前计算的阶乘值
for (int i = 1; i <= n; i++) {
factorial *= i; // 计算当前的阶乘值
sum += factorial; // 将当前的阶乘值加入到总和中
}
System.out.println(sum); // 输出1!+2!+3!+...+n!的和
```
2. 改进算法
通过观察蛮力法的实现,我们可以发现每次计算阶乘时都需要从1开始乘到当前的数,这样的计算效率较低。因此,我们可以将已经计算过的阶乘值存储下来,避免重复计算,从而提高效率。
```java
int n = 5; // 给定的正整数n
int sum = 0; // 用于存储1!+2!+3!+...+n!的和
int[] factorials = new int[n + 1]; // 用于存储已经计算过的阶乘值
factorials[0] = 1; // 0的阶乘为1
for (int i = 1; i <= n; i++) {
factorials[i] = factorials[i - 1] * i; // 计算当前的阶乘值
sum += factorials[i]; // 将当前的阶乘值加入到总和中
}
System.out.println(sum); // 输出1!+2!+3!+...+n!的和
```
阅读全文