遞歸解法
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);
}