Mã lệnh Python sau đây thể hiện hàm sắp xếp nhanh sử dụng phân đoạn Lomuto

Câu Fcs38 trang 61 SBT Tin học 11Mã lệnh Python sau đây thể hiện hàm sắp xếp nhanh sử dụng phân đoạn Lomuto, được trích dẫn từ Hình 3 trong sách giáo khoa Tin học 11 – Khoa học máy tính.

def quickSort(a, lo, hi):

if lo < hi:

p = phandoan Lomuto (a, lo, hi) quickSort (a, lo, p 1) quickSort(a, p+1, hi)

Có thể thấy rằng trong phần cài đặt của hàm quickSort, ta lại gọi chính nó hai lần. Kĩ thuật này được gọi là đệ quy. Em hãy giải thích tại sao hàm quickSort không chạy vô hạn với một bộ tham số hợp lệ, dù nó sẽ liên tục gọi lại chính nó.

Trả lời

Em tránh được việc đệ quy vô hạn vì phần cài đặt luôn đảm bảo điều kiện dừng là lo 2 hi. Điều kiện này chắc chắn sẽ xảy ra vì kích thước của đoạn [lo, hi] sẽ luôn bị thu hẹp qua từng lớp phân đoạn.

Xem thêm các bài giải sách bài tập Tin học lớp 11 Cánh diều hay, chi tiết khác: