Skip to content

Commit e8fbb1b

Browse files
realDuYuanChaogithub-actions
andauthored
sum of factorial (#34)
* sum of factorial * Formatted with psf/black Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
1 parent f0c2a91 commit e8fbb1b

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

maths/sum_of_factorial.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
def sum_of_factorial(number: int) -> int:
2+
"""
3+
>>> sum_of_factorial(0)
4+
0
5+
>>> sum_of_factorial(1)
6+
1
7+
>>> sum_of_factorial(2)
8+
3
9+
>>> sum_of_factorial(5)
10+
153
11+
"""
12+
sum_factorial = 0
13+
factorial = 1
14+
for i in range(1, number + 1):
15+
factorial *= i
16+
sum_factorial = sum_factorial + factorial
17+
18+
return sum_factorial
19+
20+
21+
def sum_of_factorial_circle_plus_recursion(number: int) -> int:
22+
"""
23+
>>> sum_of_factorial_circle_plus_recursion(0)
24+
0
25+
>>> sum_of_factorial_circle_plus_recursion(1)
26+
1
27+
>>> sum_of_factorial_circle_plus_recursion(2)
28+
3
29+
>>> sum_of_factorial_circle_plus_recursion(5)
30+
153
31+
"""
32+
sum_factorial = 0
33+
from math import factorial
34+
35+
for i in range(1, number + 1):
36+
sum_factorial += factorial(i)
37+
return sum_factorial
38+
39+
40+
def sum_of_factorial_pure_recursion(number: int) -> int:
41+
"""
42+
>>> sum_of_factorial_pure_recursion(0)
43+
0
44+
>>> sum_of_factorial_pure_recursion(1)
45+
1
46+
>>> sum_of_factorial_pure_recursion(2)
47+
3
48+
>>> sum_of_factorial_pure_recursion(5)
49+
153
50+
"""
51+
if number == 1 or number == 0:
52+
return number # 1! or 0!
53+
elif number == 2:
54+
return 3 # 1! + 2!
55+
else:
56+
return (
57+
sum_of_factorial_pure_recursion(number - 1)
58+
+ (
59+
sum_of_factorial_pure_recursion(number - 1)
60+
- sum_of_factorial_pure_recursion(number - 2)
61+
)
62+
* number
63+
)
64+
65+
66+
if __name__ == "__main__":
67+
from doctest import testmod
68+
69+
testmod()

0 commit comments

Comments
 (0)