Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Mình có đoạn code này :
public bool Tim(Hocvien hv)
{
foreach(Hocvien a in dmHocVien)
{
if (a == hv)
{
return true;
}
else return false;
}
}
tại sao mình đặt return trong for thi bị lỗi : not all code paths return a value;
mình đặt ngoài for thì chạy bình thường nhưng vs đoạn code trên thì tại sao lại bị lỗi ??
Mong được sự giải đáp :D
tks bạn ^^ mình hiểu rồi
Chúc vui ^^!
thuật toán bạn hơi dở. cái return false để ở ngoài vòng lặp luôn. Như thế nó sẽ chạy nhah hơn. Nên tìm hiểu về big O nha
Có vẻ như bạn đang muốn tìm kiếm hv, nếu tìm không ra thì return false đúng không? Hãy nhớ 1 qui tắc khi dùng vòng lặp đó là cái gì không cần lặp thì không cho vào vòng lặp. Bạn cần nó lặp lại việc check a == hv để nếu tìm thấy thì trả về true ngay lập tức. Tức là việc kiểm tra nhằm mục đích trả về này được lặp cho đến hết danh sách. Còn việc trả về false CHỈ ĐƯỢC THỰC HIỆN NẾU không tìm được a == hv, tức là nó KHÔNG ĐƯỢC LẶP LẠI mà chỉ cần chạy MỘT LẦN DUY NHẤT. Do đó câu return false bạn hãy đặt ngoài vòng for.