Đệ quy (Recursion)
Đệ quy là gì?
Đệ quy là kỹ thuật hàm tự gọi chính nó để giải quyết bài toán nhỏ hơn.
⚠️
Luôn phải có base case! Thiếu base case → Stack Overflow
Cấu trúc hàm đệ quy
Python
def recursive_function(n):
# Base case - Điều kiện dừng
if n <= 0:
return result
# Recursive case
return recursive_function(n - 1)Giai thừa (Factorial)
Python
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120Fibonacci với Memoization
Python
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)💡
Memoization giúp tối ưu từ O(2^n) xuống O(n)!
Đệ quy vs Vòng lặp
| Đệ quy | Vòng lặp | |
|---|---|---|
| Đọc hiểu | Dễ hơn với bài toán đệ quy | Phức tạp hơn |
| Performance | Tốn bộ nhớ (call stack) | Hiệu quả hơn |
| Khi nào dùng | Tree, Graph, Divide & Conquer | Bài toán lặp đơn giản |
Tiếp theo: Chia để trị
Last updated on