summaryrefslogtreecommitdiff
path: root/examples/rust/src/fibonacci.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/rust/src/fibonacci.rs')
-rw-r--r--examples/rust/src/fibonacci.rs12
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
}