1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/// 1, 1, 2, 3, 5, 8, 13, 21
pub fn fibonacci(n: i64) -> i64 {
    if n < 1 {
        panic!("not implement error");
    } else if n == 1 {
        return 1;
    }

    let (mut fib_prev, mut fib) = (1, 1);
    for _ in 2..n {
        let next = fib + fib_prev;
        fib_prev = fib;
        fib = next;
    }
    return fib;
}