Rust中的绝对值函数

时间:2017-08-27 07:40:46

标签: function macros rust absolute-value

在这个基本的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对递归不满意,在编译时发出警告,然后不运行程序。

2 个答案:

答案 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
}