01/10/2018, 14:27

Nhờ mọi người góp ý cho code binary search bằng đệ quy

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

HK boy viết 16:39 ngày 01/10/2018

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.

Nguyễn Thanh Vũ viết 16:31 ngày 01/10/2018

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.

rogp10 viết 16:28 ngày 01/10/2018

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.

Jacaré Junior viết 16:30 ngày 01/10/2018

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

rogp10 viết 16:38 ngày 01/10/2018

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

Bài liên quan
0