illustris 4fb1bd90db
init
2026-01-08 18:11:30 +05:30

37 lines
883 B
Python

#!/usr/bin/env python3
"""
Scenario 2: Hidden Redundancy - The Memoization Problem
========================================================
This program computes Fibonacci numbers recursively.
The naive implementation has exponential time complexity due to redundant calls.
EXERCISES:
1. Run: time python3 fib_slow.py 35
2. Profile: python3 -m cProfile -s ncalls fib_slow.py 35
3. Notice the HUGE number of calls to fib()
4. See fib_cached.py for the memoized version
"""
import sys
def fib(n):
"""Compute the nth Fibonacci number recursively."""
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
def main():
n = 35 # Don't go much higher without optimization!
if len(sys.argv) > 1:
n = int(sys.argv[1])
print(f"Computing fib({n})...")
result = fib(n)
print(f"fib({n}) = {result}")
if __name__ == "__main__":
main()