diff options
| author | Henry Gressmann <mail@henrygressmann.de> | 2024-01-27 19:11:15 +0100 |
|---|---|---|
| committer | Henry Gressmann <mail@henrygressmann.de> | 2024-01-27 19:11:15 +0100 |
| commit | 6b7596e571314a595a52df1ac1c97798529ca339 (patch) | |
| tree | cd54b70350645072401a1ca0840b8b93dbeb157d /examples/rust/src | |
| parent | 3e7548c1e0b541f087e9ae36e53658956503e27b (diff) | |
pref: optimize loops
Signed-off-by: Henry Gressmann <mail@henrygressmann.de>
Diffstat (limited to 'examples/rust/src')
| -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 } |
