Compare commits
14 Commits
bf4f5beb17
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
ff72fdf47c
|
|||
|
028eb10661
|
|||
|
e8327327d4
|
|||
|
d53169d89f
|
|||
|
ecd6ecae64
|
|||
|
e051c585bc
|
|||
|
f24c40a32e
|
|||
|
158b164fa4
|
|||
|
5c39b18d49
|
|||
|
21eac5a235
|
|||
|
ab568b290b
|
|||
|
1cd69b32e7
|
|||
|
fbaf0330da
|
|||
|
c27d224e93
|
@@ -3,24 +3,34 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int recursiveSteps = 0;
|
||||
int iterativeSteps = 0;
|
||||
|
||||
// Recursive function for Fibonacci
|
||||
int fibRecursive(int n) {
|
||||
recursiveSteps++;
|
||||
if (n <= 1)
|
||||
return n; // Base case: fib(0)=0, fib(1)=1
|
||||
return n;
|
||||
return fibRecursive(n - 1) + fibRecursive(n - 2);
|
||||
}
|
||||
|
||||
// Non-recursive (Iterative) Fibonacci
|
||||
int fibIterative(int n) {
|
||||
if (n <= 1)
|
||||
return n;
|
||||
void fibIterative(int n) {
|
||||
if (n <= 0)
|
||||
return;
|
||||
int prev = 0, curr = 1, next;
|
||||
for (int i = 2; i <= n; i++) {
|
||||
cout << prev << " ";
|
||||
if (n == 1)
|
||||
return;
|
||||
|
||||
cout << curr << " ";
|
||||
for (int i = 2; i < n; i++) {
|
||||
next = prev + curr;
|
||||
cout << next << " ";
|
||||
prev = curr;
|
||||
curr = next;
|
||||
iterativeSteps++;
|
||||
}
|
||||
return curr;
|
||||
}
|
||||
|
||||
int main() {
|
||||
@@ -29,22 +39,26 @@ int main() {
|
||||
cin >> n;
|
||||
|
||||
cout << "\nFibonacci Series using Recursion: ";
|
||||
for (int i = 0; i < n; i++)
|
||||
for (int i = 0; i < n; i++) {
|
||||
cout << fibRecursive(i) << " ";
|
||||
}
|
||||
cout << "\nTotal Recursive Steps: " << recursiveSteps;
|
||||
|
||||
cout << "\nFibonacci Series using Iteration: ";
|
||||
for (int i = 0; i < n; i++)
|
||||
cout << fibIterative(i) << " ";
|
||||
cout << "\n\nFibonacci Series using Iteration: ";
|
||||
fibIterative(n);
|
||||
cout << "\nTotal Iterative Steps: " << iterativeSteps;
|
||||
|
||||
cout << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// SAMPLE OUTPUT
|
||||
// SAMPLE OUTOUT
|
||||
/*
|
||||
* $ ./a.out
|
||||
* Enter the number of terms: 5
|
||||
*
|
||||
* Fibonacci Series using Recursion: 0 1 1 2 3
|
||||
* Total Recursive Steps: 19
|
||||
*
|
||||
* Fibonacci Series using Iteration: 0 1 1 2 3
|
||||
* Total Iterative Steps: 3
|
||||
*/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Code-A2 (Huffman)
|
||||
// Code-A2 (Huffman Coding)
|
||||
|
||||
#include <iostream>
|
||||
#include <queue>
|
||||
Executable → Regular
+41
-24
@@ -1,33 +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.
|
||||
|
||||
# Non-recursion
|
||||
def fibonacci(n):
|
||||
fib_series = []
|
||||
a = 0
|
||||
b = 1
|
||||
# Initalize global variables
|
||||
iteration_counter = 0
|
||||
recursion_counter = 0
|
||||
|
||||
for i in range(n):
|
||||
fib_series.append(a)
|
||||
a, b = b, a + b
|
||||
# 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
|
||||
|
||||
return fib_series
|
||||
for i in range(n):
|
||||
fib_series.append(previous)
|
||||
previous, current = current, previous + current
|
||||
iteration_counter += 1
|
||||
|
||||
return fib_series
|
||||
|
||||
# Recursion
|
||||
def fibonacci_recursive(n):
|
||||
if n <= 0:
|
||||
return []
|
||||
elif n == 1:
|
||||
return [0]
|
||||
elif n == 2:
|
||||
return [0, 1]
|
||||
else:
|
||||
fib_series = fibonacci_recursive(n - 1) # Get the series up to n-1
|
||||
fib_series.append(fib_series[-1] + fib_series[-2]) # Append the next Fibonacci number
|
||||
return fib_series
|
||||
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)
|
||||
|
||||
# Non-recursion
|
||||
n = int(input("Enter total numbers to print in fibonacci series:\t"))
|
||||
print("Fibonacci Series (non-recusive):\t", fibonacci(n))
|
||||
|
||||
# Recursion
|
||||
print("Fibonacci Series (recusive):\t\t", fibonacci_recursive(n))
|
||||
# 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)")
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# Problem Statement: Write a program non-recursive and recursive program to calculate Fibonacci numbers and analyze their time and space complexity.
|
||||
|
||||
## NOTE: THIS IS A HEAVILY OPTIMIZED CODE FOR FIBONACCI.
|
||||
## NUMBER OF RECURSION CALLS (IN RECURSION) ARE LOWER THAN NUMBER OF ITERATIONS (IN ITERATION FUNCTION)
|
||||
|
||||
iteration_counter = 0
|
||||
recursion_counter = 0
|
||||
|
||||
# Non-recursion
|
||||
def fibonacci(n):
|
||||
global iteration_counter
|
||||
fib_series = []
|
||||
a = 0
|
||||
b = 1
|
||||
|
||||
for i in range(n):
|
||||
fib_series.append(a)
|
||||
a, b = b, a + b
|
||||
iteration_counter += 1
|
||||
|
||||
return fib_series
|
||||
|
||||
# Recursion
|
||||
def fibonacci_recursive(n):
|
||||
global recursion_counter
|
||||
recursion_counter += 1
|
||||
if n <= 0:
|
||||
return []
|
||||
elif n == 1:
|
||||
return [0]
|
||||
elif n == 2:
|
||||
return [0, 1]
|
||||
else:
|
||||
fib_series = fibonacci_recursive(n - 1) # Get the series up to n-1
|
||||
fib_series.append(fib_series[-1] + fib_series[-2]) # Append the next Fibonacci number
|
||||
return fib_series
|
||||
|
||||
# Non-recursion
|
||||
n = int(input("Enter total numbers to print in fibonacci series:\t"))
|
||||
print("Fibonacci Series (non-recusive):\t", fibonacci(n))
|
||||
print("Iteration counter:\t", iteration_counter)
|
||||
|
||||
# Recursion
|
||||
print("Fibonacci Series (recusive):\t\t", fibonacci_recursive(n))
|
||||
print("Recursion counter:\t", recursion_counter)
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user