Fibonacci Sequence

Algorithms

The Fibonacci sequence is a series of numbers where each number is the sum of the two preceding ones, typically starting with 0 and 1.

Definition

The Fibonacci sequence is defined as:

Dynamic Programming Approach

Using dynamic programming, we can compute Fibonacci numbers efficiently in time with space using an optimized approach.

Implementation

def fibonacci(n, optimized=True):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    
    if optimized:
        # Space-Optimized Approach
        a, b = 0, 1
        for _ in range(2, n + 1):
            a, b = b, a + b
        return b
    else:
        # Full List Approach
        fib = [0] * (n + 1)
        fib[1] = 1
        for i in range(2, n + 1):
            fib[i] = fib[i - 1] + fib[i - 2]
        return fib[n]

# Example usage:
print(fibonacci(10))  # Output: 55 (optimized by default)
print(fibonacci(10, optimized=False))  # Output: 55 (using full list)