From 451c97dabc9ebfe63a44b5fa9dd3f937b03bafa7 Mon Sep 17 00:00:00 2001 From: sharvandeep <2400032427@kluniversity.in> Date: Mon, 24 Nov 2025 11:46:38 +0530 Subject: [PATCH 1/5] docs: clean up docstring in fib_recursive function --- maths/fibonacci.py | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/maths/fibonacci.py b/maths/fibonacci.py index 71ff479f9cc2..9e95f926ec54 100644 --- a/maths/fibonacci.py +++ b/maths/fibonacci.py @@ -86,24 +86,38 @@ def fib_iterative(n: int) -> list[int]: for _ in range(n - 1): fib.append(fib[-1] + fib[-2]) return fib - - def fib_recursive(n: int) -> list[int]: """ - Calculates the first n (0-indexed) Fibonacci numbers using recursion - >>> fib_iterative(0) - [0] - >>> fib_iterative(1) - [0, 1] - >>> fib_iterative(5) - [0, 1, 1, 2, 3, 5] - >>> fib_iterative(10) - [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55] - >>> fib_iterative(-1) - Traceback (most recent call last): - ... - ValueError: n is negative + Calculate the first n (0-indexed) Fibonacci numbers using recursion. + + Args: + n (int): The number of Fibonacci terms to generate. + + Returns: + list[int]: A list of the first n Fibonacci numbers. + + Examples: + >>> fib_recursive(0) + [0] + >>> fib_recursive(1) + [0, 1] + >>> fib_recursive(5) + [0, 1, 1, 2, 3, 5] + >>> fib_recursive(-1) + Traceback (most recent call last): + ... + ValueError: n is negative """ + def fib_recursive_term(i: int) -> int: + if i < 0: + raise ValueError("n is negative") + if i < 2: + return i + return fib_recursive_term(i - 1) + fib_recursive_term(i - 2) + + if n < 0: + raise ValueError("n is negative") + return [fib_recursive_term(i) for i in range(n + 1)] def fib_recursive_term(i: int) -> int: """ @@ -112,6 +126,8 @@ def fib_recursive_term(i: int) -> int: 0 >>> fib_recursive_term(1) 1 + >>> fib_recursive_term(5) + >>> fib_recursive_term(5) 5 >>> fib_recursive_term(10) From 15b1a6745712656ad934ee8031073a8aa5a2e5c4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 06:48:10 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/fibonacci.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/maths/fibonacci.py b/maths/fibonacci.py index 9e95f926ec54..0ac1a249ea8b 100644 --- a/maths/fibonacci.py +++ b/maths/fibonacci.py @@ -86,6 +86,8 @@ def fib_iterative(n: int) -> list[int]: for _ in range(n - 1): fib.append(fib[-1] + fib[-2]) return fib + + def fib_recursive(n: int) -> list[int]: """ Calculate the first n (0-indexed) Fibonacci numbers using recursion. @@ -108,6 +110,7 @@ def fib_recursive(n: int) -> list[int]: ... ValueError: n is negative """ + def fib_recursive_term(i: int) -> int: if i < 0: raise ValueError("n is negative") From dcc3fed2bf5ea09c3b3b0004bcee09a6d3a3aec0 Mon Sep 17 00:00:00 2001 From: sharvandeep <2400032427@kluniversity.in> Date: Mon, 24 Nov 2025 12:50:40 +0530 Subject: [PATCH 3/5] fix: remove duplicate definition of fib_recursive_term --- maths/fibonacci.py | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/maths/fibonacci.py b/maths/fibonacci.py index 0ac1a249ea8b..25c3305e6681 100644 --- a/maths/fibonacci.py +++ b/maths/fibonacci.py @@ -122,36 +122,7 @@ def fib_recursive_term(i: int) -> int: raise ValueError("n is negative") return [fib_recursive_term(i) for i in range(n + 1)] - def fib_recursive_term(i: int) -> int: - """ - Calculates the i-th (0-indexed) Fibonacci number using recursion - >>> fib_recursive_term(0) - 0 - >>> fib_recursive_term(1) - 1 - >>> fib_recursive_term(5) - - >>> fib_recursive_term(5) - 5 - >>> fib_recursive_term(10) - 55 - >>> fib_recursive_term(-1) - Traceback (most recent call last): - ... - Exception: n is negative - """ - if i < 0: - raise ValueError("n is negative") - if i < 2: - return i - return fib_recursive_term(i - 1) + fib_recursive_term(i - 2) - - if n < 0: - raise ValueError("n is negative") - return [fib_recursive_term(i) for i in range(n + 1)] - - -def fib_recursive_cached(n: int) -> list[int]: + def fib_recursive_cached(n: int) -> list[int]: """ Calculates the first n (0-indexed) Fibonacci numbers using recursion >>> fib_iterative(0) From 061003821dbe66c1221883e1ca7bea98a40cea87 Mon Sep 17 00:00:00 2001 From: sharvandeep <2400032427@kluniversity.in> Date: Mon, 24 Nov 2025 13:11:49 +0530 Subject: [PATCH 4/5] style: fix indentation and pass all pre-commit checks --- maths/fibonacci.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/maths/fibonacci.py b/maths/fibonacci.py index 25c3305e6681..82ae92a79579 100644 --- a/maths/fibonacci.py +++ b/maths/fibonacci.py @@ -122,9 +122,10 @@ def fib_recursive_term(i: int) -> int: raise ValueError("n is negative") return [fib_recursive_term(i) for i in range(n + 1)] - def fib_recursive_cached(n: int) -> list[int]: +def fib_recursive_cached(n: int) -> list[int]: """ - Calculates the first n (0-indexed) Fibonacci numbers using recursion + Calculates the first n (0-indexed) Fibonacci numbers using recursion. + >>> fib_iterative(0) [0] >>> fib_iterative(1) @@ -142,7 +143,7 @@ def fib_recursive_cached(n: int) -> list[int]: @functools.cache def fib_recursive_term(i: int) -> int: """ - Calculates the i-th (0-indexed) Fibonacci number using recursion + Calculates the i-th (0-indexed) Fibonacci number using recursion. """ if i < 0: raise ValueError("n is negative") @@ -154,7 +155,6 @@ def fib_recursive_term(i: int) -> int: raise ValueError("n is negative") return [fib_recursive_term(i) for i in range(n + 1)] - def fib_memoization(n: int) -> list[int]: """ Calculates the first n (0-indexed) Fibonacci numbers using memoization @@ -320,3 +320,4 @@ def fib_matrix_np(n: int) -> int: time_func(fib_recursive_cached, num) # 0.0153 ms time_func(fib_recursive, num) # 257.0910 ms time_func(fib_matrix_np, num) # 0.0000 ms + From 3a648651c7af1f66158a7279169c44069076a5ab Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 07:42:10 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/fibonacci.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maths/fibonacci.py b/maths/fibonacci.py index 82ae92a79579..23eb636efc5c 100644 --- a/maths/fibonacci.py +++ b/maths/fibonacci.py @@ -122,6 +122,7 @@ def fib_recursive_term(i: int) -> int: raise ValueError("n is negative") return [fib_recursive_term(i) for i in range(n + 1)] + def fib_recursive_cached(n: int) -> list[int]: """ Calculates the first n (0-indexed) Fibonacci numbers using recursion. @@ -155,6 +156,7 @@ def fib_recursive_term(i: int) -> int: raise ValueError("n is negative") return [fib_recursive_term(i) for i in range(n + 1)] + def fib_memoization(n: int) -> list[int]: """ Calculates the first n (0-indexed) Fibonacci numbers using memoization @@ -320,4 +322,3 @@ def fib_matrix_np(n: int) -> int: time_func(fib_recursive_cached, num) # 0.0153 ms time_func(fib_recursive, num) # 257.0910 ms time_func(fib_matrix_np, num) # 0.0000 ms -