
rust 的 `..` 半开区间(不含右端点)与 go/ruby 中常见的 `
在 Rust 中,0is..100000000is 表示从 0(含)到 100000000(不含)的半开区间,即实际遍历 i = 0, 1, 2, ..., 99999999,共 100,000,000 个整数,其和为:
$$ \sum_{i=0}^{99999999} i = \frac{99999999 \times 100000000}{2} = 4999999950000000 $$
而原始 Go 和 Ruby 代码存在双重偏差:
✅ 统一逻辑的修正方案如下:
Rust(推荐显式类型与现代语法):
fn main() {
let mut sum: u64 = 0;
for i in 0..=99999999 { // 使用 ..= 表示闭区间(含右端点)
sum += i;
}
println!("{}", sum); // 输出:4999999950000000
}Go(修正为闭区间语义):
package main
import "fmt"
func main() {
var sum int64 = 0
for i := int64(0); i <= 99999999; i++ { // 注意:起始为 0,且使用 <=
sum += i
}
fmt.Println(sum) // 输出:4999999950000000
}Ruby(改用闭区间范围):
sum = 0
(0..99999999).each { |i| sum += i } # .. 表示闭区间(含末尾)
puts sum # 输出:4999999950000000⚠️ 关键注意事项:
总结:跨语言开发时,切勿假设区间语义一致;始终以文档为准,优先使用显式边界(如 ..=、