Tôi đang phân tích một số thời gian chạy của các vòng lặp khác nhau và khi tôi có thêm kiến thức, tôi tò mò muốn hiểu vấn đề này mà tôi vẫn chưa tìm ra. Tôi có bài tập này tên là "Có bao nhiêu ngôi sao được in":
for (int i = N; i > 1; i = i/2) System.out.println("*");
Câu trả lời để chọn là
A: ~log N
B: ~N
C: ~N log N
D: ~0.5N^2
Vì vậy, câu trả lời nên là A và tôi đồng ý với điều đó, nhưng ở phía bên kia .. Hãy nói sau đó N = 500
sẽ Log N
là gì? Nó sẽ là 2,7. Vậy điều gì sẽ xảy ra nếu chúng ta nói điều đó N=500
trong bài tập của chúng ta ở trên? Điều đó chắc chắn sẽ in nhiều hơn han 2,7 sao? Làm thế nào là liên quan?
Bởi vì thật hợp lý khi nói rằng nếu vòng lặp for trông như thế này:
for (int i = 0; i < N; i++)
Nó sẽ in N
sao.
Tôi hy vọng sẽ tìm thấy một lời giải thích cho vấn đề này ở đây, có lẽ tôi đang diễn giải tất cả những điều này sai và nghĩ về nó theo cách xấu. Cảm ơn trước.