4.8.1 解答
01-解答 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/control-flow-basics/solution.html
4.8.1 解答
| |
该解答展示了几个关键的 Rust 特性:
mut参数: 参数n声明为mut n。这使局部变量n在函数作用域内可变。它_不会_影响调用方的值,因为整数是按值传递的Copy类型。if表达式: Rust 的if是表达式,意味着它会产生一个值。我们将if/else块的结果直接赋给n。这比在每个分支里分别写n = ...更简洁。- 隐式返回: 函数以
len(无分号)结尾,该值会自动返回。
- 注意:要使 Collatz 序列有效,
n必须严格大于 0。函数签名接受i32,但问题描述暗示为正整数。更稳健的实现可能会使用u32,或返回Option/Result来处理无效输入(0 或负数);若n <= 0,这里可能出现 panic 或无限循环。- 若
n变得过大,溢出是潜在问题,与 Fibonacci 练习类似。