From bcba6f5c1db9e02db0072899fe746af9ccdb9c1c Mon Sep 17 00:00:00 2001 From: shellhub Date: Tue, 8 Jun 2021 17:14:57 +0800 Subject: [PATCH 1/2] add fibonacci --- maths/fibonacci.py | 34 ++++++++++++++++++++++++++++++++++ maths/fibonacci_recursion.py | 28 ++++++++++++++++++++++++++++ maths/fibonacci_with_list.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 maths/fibonacci.py create mode 100644 maths/fibonacci_recursion.py create mode 100644 maths/fibonacci_with_list.py diff --git a/maths/fibonacci.py b/maths/fibonacci.py new file mode 100644 index 0000000..ee1f26e --- /dev/null +++ b/maths/fibonacci.py @@ -0,0 +1,34 @@ +def fibonacci(number: int) -> int: + """ + >>> fibonacci(0) + 0 + >>> fibonacci(1) + 1 + >>> fibonacci(2) + 1 + >>> fibonacci(3) + 2 + >>> fibonacci(4) + 3 + >>> fibonacci(5) + 5 + >>> fibonacci(6) + 8 + >>> fibonacci(7) + 13 + >>> fibonacci(8) + 21 + """ + first_item = 0 + second_item = 1 + for i in range(0, number): + temp = first_item + second_item + first_item = second_item + second_item = temp + return first_item + + +if __name__ == "__main__": + from doctest import testmod + + testmod() diff --git a/maths/fibonacci_recursion.py b/maths/fibonacci_recursion.py new file mode 100644 index 0000000..9e35309 --- /dev/null +++ b/maths/fibonacci_recursion.py @@ -0,0 +1,28 @@ +def fibonacci(number: int) -> int: + """ + >>> fibonacci(0) + 0 + >>> fibonacci(1) + 1 + >>> fibonacci(2) + 1 + >>> fibonacci(3) + 2 + >>> fibonacci(4) + 3 + >>> fibonacci(5) + 5 + >>> fibonacci(6) + 8 + >>> fibonacci(7) + 13 + >>> fibonacci(8) + 21 + """ + return number if number == 0 or number == 1 else fibonacci(number - 1) + fibonacci(number - 2) + + +if __name__ == "__main__": + from doctest import testmod + + testmod() diff --git a/maths/fibonacci_with_list.py b/maths/fibonacci_with_list.py new file mode 100644 index 0000000..72eb4e8 --- /dev/null +++ b/maths/fibonacci_with_list.py @@ -0,0 +1,33 @@ +def fibonacci(number: int) -> int: + """ + >>> fibonacci(0) + 0 + >>> fibonacci(1) + 1 + >>> fibonacci(2) + 1 + >>> fibonacci(3) + 2 + >>> fibonacci(4) + 3 + >>> fibonacci(5) + 5 + >>> fibonacci(6) + 8 + >>> fibonacci(7) + 13 + >>> fibonacci(8) + 21 + """ + fibs = [0] * (number + 2) + fibs[0] = 0 + fibs[1] = 1 + for i in range(2, number + 1): + fibs[i] = fibs[i - 1] + fibs[i - 2] + return fibs[number] + + +if __name__ == "__main__": + from doctest import testmod + + testmod() From bc9ee6db185282e275260967282dc6e3f81a2c3e Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Tue, 8 Jun 2021 09:15:30 +0000 Subject: [PATCH 2/2] Formatted with psf/black --- maths/fibonacci_recursion.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/maths/fibonacci_recursion.py b/maths/fibonacci_recursion.py index 9e35309..1bae63f 100644 --- a/maths/fibonacci_recursion.py +++ b/maths/fibonacci_recursion.py @@ -19,7 +19,11 @@ def fibonacci(number: int) -> int: >>> fibonacci(8) 21 """ - return number if number == 0 or number == 1 else fibonacci(number - 1) + fibonacci(number - 2) + return ( + number + if number == 0 or number == 1 + else fibonacci(number - 1) + fibonacci(number - 2) + ) if __name__ == "__main__":