summaryrefslogtreecommitdiff
path: root/examples/rust/src/fibonacci.rs
blob: b847ad5e1c4c378ff60ca468236f8498777d6d2b (plain)
#![no_main]

#[no_mangle]
pub extern "C" fn fibonacci(n: i32) -> i32 {
    let mut sum = 0;
    let mut last = 0;
    let mut curr = 1;
    for _i in 1..n {
        sum = last + curr;
        last = curr;
        curr = sum;
    }
    sum
}

#[no_mangle]
pub extern "C" fn fibonacci_recursive(n: i32) -> i32 {
    if n <= 1 {
        return n;
    }
    fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
}