🔁 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
python
# ===== 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")You should see
===== 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