Thuta Learning
ရှá€Ŧဖá€Ŋေရနá€ē
AdvancedProgrammingbeginner

Recursion

စိတá€ēလá€ģှေá€Ŧ့ပá€Ģ။ ဒီခနá€ēးကို စá€Ŧá€Ąá€¯á€•á€ēလိုမဟုတá€ēဘဲ စကá€Ŧးပá€ŧေá€Ŧá€žá€œá€­á€¯á€•á€˛áŠ နá€Ŧးလညá€ēလá€Ŋယá€ēအေá€Ŧငá€ē ရှငá€ēးပá€Ģမယá€ē။

🔁 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