Tôi có một vòng lặp for và tôi muốn nó tăng mãi mãi.
Mã của tôi:
cho một trong (0...Float::INFINITY).step(2)
đặt một
end
Đầu ra:
0,0
2.0
4.0
V.v. Luôn có "#{a}.0"
Có cách nào biểu diễn vô cực dưới dạng số nguyên sao cho không làm gì với nội dung của vòng lặp mà không có gì ở cuối đầu ra không .0
?
phụ lục
Bạn cũng có thể giải thích cách vòng lặp của bạn hoạt động không? Tôi đang cố gắng tìm giải pháp hiệu quả nhất vì vòng lặp này sẽ lặp vô tận nên việc giảm vài mili giây sẽ cải thiện hiệu suất đáng kể.
bên cạnh đó...
Tôi sẽ chấp nhận giải pháp mất thời gian ngắn nhất để chạy tới 1000000
theo điểm chuẩn
@Sefan và while
Các câu trả lời lặp lại mất cùng thời giancó mùi trái cây
while
Lặp lại câu trả lời mất ít thời gian hơn một chút,for
Lặp lại câu trả lời ở vị trí thứ hai, nhưng nhiều vòng lặp làm
Câu trả lời mất nhiều thời gian hơn.
Vì những lý do nằm ngoài phạm vi của câu hỏi này, tôi đã tạo một câu hỏi khác để giải quyết lý do tại sao một số vòng lặp lại nhanh hơn những vòng lặp khác (https://stackoverflow.com/questions/33088764/peddle-to-the-metal-faster-loop-faster).
Bạn có thể sử dụng Số#bước
không nhiều hơngiới hạn:
0.step(by: 2) { |i| đặt tôi }
Đầu ra:
0
2
4
6
...
Bạn cũng có thể xây dựng của riêng bạnđiều tra viên
:
step2 = Enumerator.new do |y|
một = 0
vòng lặp làm
y << một
một += 2
end
end
step2.each { |i| đặt tôi }
Tôi là một lập trình viên xuất sắc, rất giỏi!