Fibonacci using Recursion in C++
Fibonacci Series using Recursion in C++.
BeginnerRecursion ProgramsExample 2 of 5
fibonacci-using-recursion.cpp
1#include <iostream>2using namespace std;34// Recursive function to calculate Fibonacci number5int fibonacci(int n) {6 // Base cases7 if (n == 0) {8 return 0;9 }10 if (n == 1) {11 return 1;12 }1314 // Recursive case15 return fibonacci(n - 1) + fibonacci(n - 2);16}1718int main() {19 int terms;20 cout << "Enter number of terms: ";21 cin >> terms;2223 if (terms < 0) {24 cout << "Invalid input." << endl;25 return 1;26 }2728 cout << "Fibonacci series:" << endl;29 for (int i = 0; i < terms; i++) {30 cout << fibonacci(i) << " ";31 }32 cout << endl;3334 // Show individual Fibonacci numbers35 cout << "\nIndividual Fibonacci numbers:" << endl;36 for (int i = 0; i <= 10; i++) {37 cout << "F(" << i << ") = " << fibonacci(i) << endl;38 }3940 return 0;41}
Output
Enter number of terms: 10 Fibonacci series: 0 1 1 2 3 5 8 13 21 34 Individual Fibonacci numbers: F(0) = 0 F(1) = 1 F(2) = 1 F(3) = 2 F(4) = 3 F(5) = 5 F(6) = 8 F(7) = 13 F(8) = 21 F(9) = 34 F(10) = 55
What's going on
The program demonstrates recursive Fibonacci calculation:
Recursive function with multiple base cases
Calculating Fibonacci numbers
Generating Fibonacci series
Understanding recursive structure
Recursion provides intuitive solution for Fibonacci sequence.
Header Files Used
1.#include <iostream>
Provides cout and cin for input/output operations.
Understanding Fibonacci Sequence
Fibonacci Definition
:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2) for n > 1
Sequence
:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Each number = sum of previous two
Appears in nature, mathematics, art
Multiple Base Cases
Base Cases
:
if (n == 0) {
}
if (n == 1) {
return 1;
}
1return 0;
How it works
:
Two base cases needed
F(0) = 0, F(1) = 1
Stops recursion
Returns known values
Recursive Case
Function Calls Itself
:
1return fibonacci(n - 1) + fibonacci(n - 2);
How it works
:
Calls fibonacci(n-1) and fibonacci(n-2)
Adds results together
Reduces problem to smaller subproblems
Builds solution from base cases
Recursion Flow
Example: fibonacci(5)
:
1.fibonacci(5) = fibonacci(4) + fibonacci(3)
2.fibonacci(4) = fibonacci(3) + fibonacci(2)
3.fibonacci(3) = fibonacci(2) + fibonacci(1)
4.fibonacci(2) = fibonacci(1) + fibonacci(0)
5.Base cases return: F(1)=1, F(0)=0
6.Results propagate back: F(2)=1, F(3)=2, F(4)=3, F(5)=5
Performance Consideration
Time Complexity
:
O(2^n) - exponential
Repeated calculations
Same values calculated multiple times
Inefficient for large n
Optimization
:
Memoization: cache results
Iterative: O(n) time
Dynamic programming: store computed values
Better for large n
When to Use Recursive Fibonacci
Best For
:
Learning recursion
Small values of n
Understanding recursive structure
Educational purposes
Not Recommended For
:
Large values of n
Performance-critical code
Production applications
Real-time systems
Important Considerations
Base Cases
:
Must have both F(0) and F(1)
Stops recursion properly
Prevents infinite recursion
Essential for correctness
Stack Overflow
:
Deep recursion uses stack
May overflow for large n
Consider iterative approach
Limited by stack size
Repeated Calculations
:
Same values calculated multiple times
Inefficient recursive tree
Memoization improves performance
Trade-off: simplicity vs efficiency
return 0;
This ends the program successfully.