在这个基本的Rust程序中,函数计算整数的绝对值,而main()有助于完成一个带有结果的语句:
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
print!("The abs value of {} is ", x);
if x > 0 {
return x;
} else {
-x
}
}
有没有办法在abs()函数中正确打印整个语句“...的绝对值是......”?我用
尝试失败了println!("The abs value of {} is {} ", x, x);
这总是打印x参数的值(例如-4,-4),因此它不正确。
并且
println!("The abs value of {} is {} ", x, abs(x));
但是在这里,出于某种原因,Rust对递归不满意,在编译时发出警告,然后不运行程序。
答案 0 :(得分:2)
尝试this以避免递归:
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
let y = if x >= 0 { x } else { -x };
println!("The abs value of {} is {} ", x, y);
y
}
输出:
The abs value of -4 is 4
4.
答案 1 :(得分:2)
绝对值方法是already defined;你不需要自己实现它
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
let val = x.abs();
println!("The abs value of {} is {}", x, val);
val
}