斐波那契数列的Rust解法(递归和非递归)

递归解法


fn fib(n:i32) -> i32{
    if(n < 0){
        panic!("input can not be less than zero!");

    }
    else if(n == 1 || n == 2){
        1
    }
    else{
        return fib(n - 1) + fib(n - 2);
    }
    
}

fn main()
{
    let a = 5;
    let res = fib(a);
    println!("res is : {:?}", res);


}

非递归解法

fn fib(n:i32) -> i32{
    let mut res = 0;
    let mut next_item = 1;
    let mut tmp = 0;
    if(n < 0){
        panic!("input can not be less than zero!");

    }
    for _ in 0..=n{
        let mut tmp = next_item;
        next_item += res;
        res = tmp;
    }
    return res;
}

fn main()
{
    let a = 5;
    let res = fib(a);
    println!("res is : {:?}", res);


}

版权声明:本文为xiangxianghehe原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。