From 6b7596e571314a595a52df1ac1c97798529ca339 Mon Sep 17 00:00:00 2001 From: Henry Gressmann Date: Sat, 27 Jan 2024 19:11:15 +0100 Subject: pref: optimize loops Signed-off-by: Henry Gressmann --- examples/rust/src/fibonacci.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'examples') 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 } -- cgit v1.3.1