Hàm đệ quy phần 2
Thuộc phần Logic và luồng chương trình trong hành trình Python của Coddy. Bài học 61 trên 78.
Hàm đệ quy thường có hai phần:
- Trường hợp cơ sở: Xác định khi nào đệ quy nên dừng lại.
- Bước đệ quy: Gọi chính hàm đó với đầu vào nhỏ hơn.
Ví dụ: tính giai thừa bằng đệ quy (recursion):
def factorial(n):
if n == 1: # Trường hợp cơ sở
return 1
return n * factorial(n - 1) # Lời gọi đệ quy
print(factorial(5)) # Đầu ra: 120Ở đây, hàm (function) liên tục gọi chính nó với n - 1 cho đến khi đạt đến 1, tại đó đệ quy dừng lại.
Ví dụ: đảo ngược một chuỗi:
def recursive_reverse(s):
if len(s) <= 1: # Trường hợp cơ sở: chuỗi rỗng hoặc chỉ có một ký tự
return s
else:
return recursive_reverse(s[1:]) + s[0] # Bước đệ quy
text = "hello"
result = recursive_reverse(text)
print(result)
# Đầu ra: ollehTrong ví dụ này, hàm recursive_reverse gọi chính nó với phần còn lại của chuỗi (s[1:]) cho đến khi chuỗi rỗng hoặc chỉ còn một ký tự. Mỗi lần gọi thêm ký tự đầu tiên vào kết quả của lần gọi đệ quy, qua đó đảo ngược chuỗi.
Thử thách
DễViết một hàm đệ quy (recursion) tên là fibonacci, nhận một số nguyên dương n làm đối số và trả về số Fibonacci thứ n. Dãy Fibonacci được định nghĩa như sau:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)khin > 2.
Đầu vào mẫu:
n = 6Đầu ra mẫu:
5Tự làm thử
def fibonacci(n):
# Viết code ở đâyBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
4Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ7Tập hợp phần 2
Phép toán toán học phần 1Phép toán toán học phần 2Ôn tập: Săn tìm kho báuTập hợp con và tập hợp chaLặp qua các tập hợpÔn tập: Theo dõi giải đấu10Tạo danh sách bằng cú pháp rút gọn cơ bản
Cú phápTạo danh sách đơn giảnThêm điều kiệnSử dụng phép tổng hợp dữ liệuÔn tập: Ngôi nhà của những danh sáchÔn tập: Những phần tử tự do13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Từ điển phần 1
Từ điển là gì?Tạo từ điểnTruy cập giá trịChỉnh sửa từ điểnÔn tập: Trình quản lý công thức nấu ăn5Ra quyết định nâng cao
Toán tử ba ngôiKiểm tra thành viênKiểm tra danh tínhLỗi thụt lềÔn tập: Bộ lọc kỳ nghỉ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Từ điển, phần 2
Phương thức của từ điểnTừ điển lồng nhauKiểm tra khóaLặp qua từ điểnÔn tập: Bộ đếm tần suất6Tập hợp phần 1
Tập hợp là gì?Các phép toán cơ bảnCác phương thức của tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Sử dụng tổngTìm giá trị nhỏ nhất và lớn nhấtSắp xếp dữ liệu hiệu quảÔn tập: Bộ sắp xếp từ điểnTự luyện tập: Trình biên dịch Python online