fn gcd(mut n: u64, mut m: u64) -> u64 {
assert!(n != 0 && m != 0);
while m != 0 {
if m < n {
let t = m;
m = n;
n = t;
}
m = m % n;
}
n
}
#[test]
fn test_gcd() {
assert_eq!(gcd(14, 15), 1);
assert_eq!(gcd(2 * 3 * 5 * 11 * 17,
3 * 7 * 11 * 13 * 19),
3 * 11);
}
笔记
- let 语句用于声明一个局部变量, 不用明确写出 t 的类型,因为 Rust 可以根据如何使用变量推断出来。
- 函数参数和返回值则必须像前面一样明确写出类型
- 函数体中最后一行代码是一个表达式,且表达式末尾没有分号,那这个表达式的值就是函数的返回值
- #[test] 标记是属性(attribute)的一个例子
- 属性是一种开放式标记机制,用于给函数或其他声明添加补充说明