-
Notifications
You must be signed in to change notification settings - Fork 0
improve fibonacchi examples [change in title] #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
af16f1d
d02da11
7487071
45ef703
af234d5
ba24b39
1009848
396c569
8554325
744f1c1
06b510c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,23 +1,9 @@ | ||||||||||||||||||||||||||||||||
| def nth_fibonacci(n): | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Base case: if n is 0 or 1, return n | ||||||||||||||||||||||||||||||||
| if n <= 1: | ||||||||||||||||||||||||||||||||
| return n | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Recursive case: sum of the two preceding Fibonacci numbers | ||||||||||||||||||||||||||||||||
| return nth_fibonacci(n - 1) + nth_fibonacci(n - 2) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| n = 5 | ||||||||||||||||||||||||||||||||
| result = nth_fibonacci(n) | ||||||||||||||||||||||||||||||||
| print(result) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Function to calculate the nth Fibonacci number using memoization | ||||||||||||||||||||||||||||||||
| def nth_fibonacci_util(n, memo): | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Base case: if n is 0 or 1, return n | ||||||||||||||||||||||||||||||||
| if n <= 1: | ||||||||||||||||||||||||||||||||
| return n | ||||||||||||||||||||||||||||||||
| return m | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
Comment on lines
+6
to
7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. NameError: Undefined Variable 'm' in Base CaseThe base case of nth_fibonacci_util references variable 'm' which is undefined, causing a runtime NameError. This prevents the function from working for any input.
Suggested change
Standards
|
||||||||||||||||||||||||||||||||
| # Check if the result is already in the memo table | ||||||||||||||||||||||||||||||||
| if memo[n] != -1: | ||||||||||||||||||||||||||||||||
|
|
@@ -30,21 +16,25 @@ def nth_fibonacci_util(n, memo): | |||||||||||||||||||||||||||||||
| return memo[n] | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Wrapper function that handles both initialization | ||||||||||||||||||||||||||||||||
| # and Fibonacci calculation | ||||||||||||||||||||||||||||||||
| def nth_fibonacci(n): | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Create a memoization table and initialize with -1 | ||||||||||||||||||||||||||||||||
| memo = [-1] * (n + 1) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| # Call the utility function | ||||||||||||||||||||||||||||||||
| return nth_fibonacci_util(n, memo) | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| if __name__ == "__main__": | ||||||||||||||||||||||||||||||||
| n = 5 | ||||||||||||||||||||||||||||||||
| result = nth_fibonacci(n) | ||||||||||||||||||||||||||||||||
| print(result) | ||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||
| Calculate the nth Fibonacci number. | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| Args: | ||||||||||||||||||||||||||||||||
| n: A non-negative integer | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| Returns: | ||||||||||||||||||||||||||||||||
| The nth number in the Fibonacci sequence | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| Raises: | ||||||||||||||||||||||||||||||||
| TypeError: If n is not an integer | ||||||||||||||||||||||||||||||||
| ValueError: If n is negative | ||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||
| if not isinstance(n, int): | ||||||||||||||||||||||||||||||||
| raise TypeError("Input must be an integer") | ||||||||||||||||||||||||||||||||
| if n < 0: | ||||||||||||||||||||||||||||||||
| raise ValueError("Input must be non-negative") | ||||||||||||||||||||||||||||||||
| return nth_fibonacci_util(n) | ||||||||||||||||||||||||||||||||
|
Comment on lines
+33
to
+37
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Incorrect helper invocation and missing memo initialization. nth_fibonacci_util requires a memo parameter. As written, this will fail with a missing-argument TypeError. Apply this diff: - return nth_fibonacci_util(n)
+ # Use memoization helper
+ memo = [-1] * (n + 1)
+ return nth_fibonacci_util(n, memo)📝 Committable suggestion
Suggested change
🤖 Prompt for AI AgentsThere was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing Required Parameter in Function CallThe function nth_fibonacci_util is called with only one argument, but its definition requires two parameters (n, memo). This will cause a runtime error when the function is called.
Suggested change
Standards
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
@@ -68,6 +58,5 @@ def nth_fibonacci(n): | |||||||||||||||||||||||||||||||
| # Return the nth Fibonacci number | ||||||||||||||||||||||||||||||||
| return dp[n] | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
| n = 5 | ||||||||||||||||||||||||||||||||
| result = nth_fibonacci(n) | ||||||||||||||||||||||||||||||||
| print(result) | ||||||||||||||||||||||||||||||||
| # Remove lines 57-59 entirely | ||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
Comment on lines
+61
to
+62
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove stray review artifact from source. The line “Remove lines 57-59 entirely” appears to be a leftover review note and should not be in code. Apply this diff: -# Remove lines 57-59 entirely📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
Comment on lines
+61
to
+62
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Commented Instruction to Remove Code Remains in CodebaseThe comment indicates that lines 57-59 should be removed, but both the comment and the referenced code remain in the codebase. This creates confusion about the intended implementation.
Suggested change
Standards
|
||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| import unittest | ||
| from main import nth_fibonacci | ||
|
|
||
| class TestFibonacci(unittest.TestCase): | ||
| def test_base_cases(self): | ||
| self.assertEqual(nth_fibonacci(0), 0) | ||
| self.assertEqual(nth_fibonacci(1), 1) | ||
|
|
||
| def test_positive_values(self): | ||
| self.assertEqual(nth_fibonacci(2), 1) | ||
| self.assertEqual(nth_fibonacci(5), 5) | ||
| self.assertEqual(nth_fibonacci(10), 55) | ||
|
|
||
| def test_input_validation(self): | ||
| with self.assertRaises(TypeError): | ||
| nth_fibonacci('5') | ||
| with self.assertRaises(ValueError): | ||
| nth_fibonacci(-1) | ||
|
|
||
| if __name__ == '__main__': | ||
| unittest.main() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix NameError in base case: use
n, notm.Ruff correctly flags
mas undefined. This will raise at runtime and break the script under the module guard.Apply this fix:
📝 Committable suggestion
🧰 Tools
🪛 Ruff (0.12.2)
6-6: Undefined name
m(F821)
🤖 Prompt for AI Agents