summaryrefslogtreecommitdiff
path: root/examples/rust/src/fibonacci.rs
diff options
context:
space:
mode:
authorHenry Gressmann <mail@henrygressmann.de>2024-01-27 19:11:15 +0100
committerHenry Gressmann <mail@henrygressmann.de>2024-01-27 19:11:15 +0100
commit6b7596e571314a595a52df1ac1c97798529ca339 (patch)
treecd54b70350645072401a1ca0840b8b93dbeb157d /examples/rust/src/fibonacci.rs
parent3e7548c1e0b541f087e9ae36e53658956503e27b (diff)
pref: optimize loops
Signed-off-by: Henry Gressmann <mail@henrygressmann.de>
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
}