Coding Exercise: Fibonacci Sequence Using Recursion

Calculate nth Fibonacci number where F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2).

Test cases: fib(6)=8, fib(7)=13, fib(0)=0.

Problem Statement

Input: Integer n (0 ≤ n ≤ 20)

Output: F(n) - nth Fibonacci number

Base cases: F(0)=0, F(1)=1

Recursive: F(n)=F(n-1)+F(n-2)

Sequence: 0,1,1,2,3,5,8,13,21,34...

Approach

1. Base cases: if n==0 return 0, if n==1 return 1

2. Recursive: return fib(n-1) + fib(n-2)

3. Two branches create tree-like recursion

Solution Code

C++
Recursive Fibonacci function
#include <iostream>
using namespace std;

int fibonacci(int n) {
    // Base cases
    if (n == 0) return 0;
    if (n == 1) return 1;
    
    // Recursive case
    return fibonacci(n-1) + fibonacci(n-2);
}

int main() {
    int num;
    cout << "Enter position: ";
    cin >> num;
    
    cout << "F(" << num << ") = " << fibonacci(num) << endl;
    return 0;
}

Dry Run: fibonacci(5)

TEXT
Recursion tree for fib(5)
fib(5)
├── fib(4) + fib(3)
│   ├── fib(3) + fib(2)
│   │   ├── fib(2) + fib(1) = 1 + 1 = 2
│   │   └── fib(1) = 1
│   └── fib(2) = 2
└── fib(3) = 3

Result: 5 + 3 = 8 ✓

Test Cases

TEXT
Expected outputs
n=0  → F(0)=0
n=1  → F(1)=1
n=2  → F(2)=1
n=5  → F(5)=5
n=6  → F(6)=8
n=7  → F(7)=13

Time & Space Analysis

Time: O(2^n) - exponential (fib tree)

Space: O(n) - max recursion depth

Optimization: Memoization or iteration for production

Practice Variations

1. Print first N Fibonacci numbers

2. Check if number is Fibonacci

3. Fibonacci with memoization (DP)

Conclusion

Mastered Fibonacci recursion! Understand exponential complexity.

Next: Power function or string reversal recursively.