diff --git a/Codes/Code-A1.py b/Codes/Code-A1.py new file mode 100644 index 0000000..f864ed1 --- /dev/null +++ b/Codes/Code-A1.py @@ -0,0 +1,50 @@ +# Code-A1 (Fibonacci) +# Problem Statement: Write a program non-recursive and recursive program to calculate Fibonacci numbers and analyze their time and space complexity. + +# Initalize global variables +iteration_counter = 0 +recursion_counter = 0 + +# Iteration +def fibonacci_iteration(n): + fib_series = [] # For storing Fibonacci series + previous = 0 # Previous + current = 1 # Next + global iteration_counter # Global iteration counter + iteration_counter = 0 # Initialize global iteration counter to 0 + + for i in range(n): + fib_series.append(previous) + previous, current = current, previous + current + iteration_counter += 1 + + return fib_series + +# Recursion +def fibonacci_recursion(n): + global recursion_counter # Global recursion counter + recursion_counter += 1 # Increment recursion counter for each call + + if (n <= 0): # Handle n less than or equal to 0 + return 0 + elif (n <= 1): # Handle n less than or equal to 1 + return n + else: # Recursive call + return fibonacci_recursion(n - 1) + fibonacci_recursion(n - 2) + +n = int(input("Enter total numbers to print in fibonacci series:\t")) + +# Fibonacci using iteration +fib_series = fibonacci_iteration(n) +print(f"Fibonacci using iteration:\t{fib_series}") +print(f"Iteration counter:\t{iteration_counter}| Time Complexity: O(n) (linear growth)") + +print("="*80) + +# Fibonacci using recursion +fib_series = [] +for i in range(n): + fib_series.append(fibonacci_recursion(i)) +print(f"Fibonacci using recursion:\t{fib_series}") +print(f"Recursion counter:\t{recursion_counter} | Time Complexity: O(2^n) (exponential growth)") +