Nhờ góp ý code binary search bằng đệ quy

Dùng đệ quy cho binary search thế này có đúng không các bác?

Tại sao lại phải viết

low = mid + 1
return binarysearch(...)

mà không viết

return binarysearch(a, mid+1, high, key)

; vẫn đảm bảo trực quan và dễ hiểu?

P/s: Góp ý cách đánh máy theo chuẩn: Trước dấu phẩy , không có dấu cách.

2 Likes

Khi bắt đầu 1 biến thì bạn nên khởi tạo cho biến đó luôn, cụ thể là:

int mid = (low+high)/2;

Còn lại thì như bạn ở trên góp ý. Bạn có thể dùng toán tử "? : " nếu muốn gọn hơn nữa.

mid = (low + high) / 2 là chưa đúng :slight_smile: vì kết quả thì không tràn, nhưng mid + high sẽ tràn.

Đúng ra là mid = low + (high - low) / 2. Không sợ low > high vì đã xét rồi và trừ như vậy là bt.

THÌ tui cũng thắc mắc làm sao để thay câu lệnh while(low <= high), cảm ơn nhiều :smile:

Nó là điều kiện dừng đệ quy mà, sao bỏ được.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?