给定一个正整数n(n>1),采用蛮力法求1!+2!+3!+…+n!,并改进该算法
时间: 2023-11-13 13:56:21 浏览: 139
java基础编程:求1+2!+3!+...的前n项的和
好的,针对您的问题,蛮力法求1!+2!+3!+…+n!的思路是先计算每个数的阶乘,然后将它们相加。具体实现可以使用循环来计算每个数的阶乘,并在循环中累加结果。以下是一个示例代码:
```python
def factorial_sum(n):
result = 0
for i in range(1, n+1):
factorial = 1
for j in range(1, i+1):
factorial *= j
result += factorial
return result
```
这个算法的时间复杂度为O(n^2),因为需要计算n个数的阶乘,每个阶乘的计算需要O(n)的时间。
为了改进这个算法,我们可以使用动态规划来避免重复计算。具体来说,我们可以使用一个数组来保存每个数的阶乘,然后在计算下一个数的阶乘时直接使用已经计算好的结果。以下是改进后的代码:
```python
def factorial_sum(n):
factorials = [1] * (n+1)
result = 0
for i in range(1, n+1):
factorials[i] = factorials[i-1] * i
result += factorials[i]
return result
```
这个算法的时间复杂度为O(n),因为只需要计算n个数的阶乘,每个阶乘的计算只需要O(1)的时间。
阅读全文