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..1bae63f --- /dev/null +++ b/maths/fibonacci_recursion.py @@ -0,0 +1,32 @@ +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()