Dùng đệ quy cho binary search thế này có đúng không các bác?
Nhờ góp ý code binary search bằng đệ quy
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
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 
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?