đ Lesson 61: Python Recursion (Functions Calling Themselves)
1. Recursion ááá¯ááŦááŦáá˛?
ááŧááēááŦ â Recursion ááá¯ááŦ function áá áēáá¯á ááá¯ááēááá¯ááēááá¯ááēááᯠááŧááēááąáĢáēáá¯áļá¸áá˛áˇáááēḠááŧá áēáááēá
English â Recursion is when a function calls itself to solve a problem.
2. Why Use Recursion?
- Problem āšā¸Ģā¸āšááᯠsub-problems áĄáááēá¸áááēáĄááŧá áē ááŊá˛ááŧáŽá¸ ááŧáąáážááēá¸ááá¯ááēáááē
- Tree structures, mathematical problems (factorial, Fibonacci) áĄááŊááē áĄáááēááŧáąáááē
- Algorithm design (divide & conquer) áážáŦ áĄááááĄáá¯áļá¸ááģáŦá¸áááē
3. áĄááģááēá¸ááģá¯ááē
â Recursion = function calling itself
â Base case + recursive case ááážááááŧá áēááá¯áááē
â Example â countdown, factorial, Fibonacci
â Real-world â file system, algorithms, tree structures
# ===== 1. Basic Recursion (Countdown) =====
def countdown(n):
if n == 0:
print("Done!")
else:
print(n)
countdown(n-1)
print("===== Countdown =====")
countdown(5)
# ===== 2. Factorial Example =====
print(f"\n===== Factorial =====")
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n-1)
print(f"5! = {factorial(5)}") # 120
# ===== 3. Fibonacci Example =====
print(f"\n===== Fibonacci =====")
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
print(f"fibonacci(6) = {fibonacci(6)}") # 8
# ===== 4. Key Concepts =====
print(f"\n===== Key Concepts =====")
print("Base Case â Recursion áááēáááˇáēáĄááģááē (e.g., if n==0)")
print("Recursive Case â Function ááᯠááá¯ááēááá¯ááēááŧááēááąáĢáēáá˛áˇáĄááá¯ááēá¸")
print("Stack Overflow â Base case áááąá¸áááē infinite recursion")
# ===== 5. Real-World Use Cases =====
print(f"\n===== Use Cases =====")
print("â
File system traversal")
print("â
Tree/Graph algorithms (DFS, BFS)")
print("â
Mathematical problems")
print("â
Divide & Conquer algorithms")===== Countdown ===== 5 4 3 2 1 Done! ===== Factorial ===== 5! = 120 ===== Fibonacci ===== fibonacci(6) = 8 ===== Key Concepts ===== Base Case â Recursion áááēáááˇáēáĄááģááē (e.g., if n==0) Recursive Case â Function ááᯠááá¯ááēááá¯ááēááŧááēááąáĢáēáá˛áˇáĄááá¯ááēḠStack Overflow â Base case áááąá¸áááē infinite recursion ===== Use Cases ===== â
File system traversal â
Tree/Graph algorithms (DFS, BFS) â
Mathematical problems â
Divide & Conquer algorithms