From 9104cb812c16fdcbaf1ecf02120981130687f2e9 Mon Sep 17 00:00:00 2001 From: shellhub Date: Tue, 8 Jun 2021 16:51:44 +0800 Subject: [PATCH 1/2] sum of factorial --- maths/sum_of_factorial.py | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 maths/sum_of_factorial.py diff --git a/maths/sum_of_factorial.py b/maths/sum_of_factorial.py new file mode 100644 index 0000000..d1d3605 --- /dev/null +++ b/maths/sum_of_factorial.py @@ -0,0 +1,62 @@ +def sum_of_factorial(number: int) -> int: + """ + >>> sum_of_factorial(0) + 0 + >>> sum_of_factorial(1) + 1 + >>> sum_of_factorial(2) + 3 + >>> sum_of_factorial(5) + 153 + """ + sum_factorial = 0 + factorial = 1 + for i in range(1, number + 1): + factorial *= i + sum_factorial = sum_factorial + factorial + + return sum_factorial + + +def sum_of_factorial_circle_plus_recursion(number: int) -> int: + """ + >>> sum_of_factorial_circle_plus_recursion(0) + 0 + >>> sum_of_factorial_circle_plus_recursion(1) + 1 + >>> sum_of_factorial_circle_plus_recursion(2) + 3 + >>> sum_of_factorial_circle_plus_recursion(5) + 153 + """ + sum_factorial = 0 + from math import factorial + for i in range(1, number + 1): + sum_factorial += factorial(i) + return sum_factorial + + +def sum_of_factorial_pure_recursion(number: int) -> int: + """ + >>> sum_of_factorial_pure_recursion(0) + 0 + >>> sum_of_factorial_pure_recursion(1) + 1 + >>> sum_of_factorial_pure_recursion(2) + 3 + >>> sum_of_factorial_pure_recursion(5) + 153 + """ + if number == 1 or number == 0: + return number # 1! or 0! + elif number == 2: + return 3 # 1! + 2! + else: + return sum_of_factorial_pure_recursion(number - 1) + ( + sum_of_factorial_pure_recursion(number - 1) - sum_of_factorial_pure_recursion(number - 2)) * number + + +if __name__ == "__main__": + from doctest import testmod + + testmod() From 739332f5bbccb42fac9f162550e2c04b2e40ce94 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Tue, 8 Jun 2021 08:52:39 +0000 Subject: [PATCH 2/2] Formatted with psf/black --- maths/sum_of_factorial.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/maths/sum_of_factorial.py b/maths/sum_of_factorial.py index d1d3605..4f19a00 100644 --- a/maths/sum_of_factorial.py +++ b/maths/sum_of_factorial.py @@ -31,6 +31,7 @@ def sum_of_factorial_circle_plus_recursion(number: int) -> int: """ sum_factorial = 0 from math import factorial + for i in range(1, number + 1): sum_factorial += factorial(i) return sum_factorial @@ -52,8 +53,14 @@ def sum_of_factorial_pure_recursion(number: int) -> int: elif number == 2: return 3 # 1! + 2! else: - return sum_of_factorial_pure_recursion(number - 1) + ( - sum_of_factorial_pure_recursion(number - 1) - sum_of_factorial_pure_recursion(number - 2)) * number + return ( + sum_of_factorial_pure_recursion(number - 1) + + ( + sum_of_factorial_pure_recursion(number - 1) + - sum_of_factorial_pure_recursion(number - 2) + ) + * number + ) if __name__ == "__main__":