diff options
Diffstat (limited to 'examples/rust/src/fibonacci.rs')
| -rw-r--r-- | examples/rust/src/fibonacci.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/examples/rust/src/fibonacci.rs b/examples/rust/src/fibonacci.rs index 7493132..3e4be73 100644 --- a/examples/rust/src/fibonacci.rs +++ b/examples/rust/src/fibonacci.rs @@ -8,10 +8,14 @@ fn panic(_info: &core::panic::PanicInfo) -> ! { } #[no_mangle] -// The rust compiler will convert this to an iterative algorithm. pub extern "C" fn fibonacci(n: i32) -> i32 { - if n <= 1 { - return n; + let mut sum = 0; + let mut last = 0; + let mut curr = 1; + for _i in 1..n { + sum = last + curr; + last = curr; + curr = sum; } - fibonacci(n - 1) + fibonacci(n - 2) + sum } |
