斐波那契數列的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);


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章