From b2ef8cc284f3573a500950f95b2fd01b2b105c50 Mon Sep 17 00:00:00 2001 From: Matthew Gordon Date: Sat, 19 Oct 2024 20:24:17 -0300 Subject: [PATCH] Add core::fibbonacci::fibbonacci() --- src/core/fibbonacci.rs | 29 +++++++++++++++++++++++++++++ src/core/mod.rs | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 src/core/fibbonacci.rs diff --git a/src/core/fibbonacci.rs b/src/core/fibbonacci.rs new file mode 100644 index 0000000..a787b69 --- /dev/null +++ b/src/core/fibbonacci.rs @@ -0,0 +1,29 @@ +pub fn fibbonacci(index: usize) -> usize { + if index == 0 { + 0 + } else if index < 3 { + 1 + } else { + let mut values = vec![1;index+1]; + for i in 3..index+1 { + values[i] = values[i - 1] + values[i - 2]; + } + values[index] + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_first_few_values() { + let expected_values = vec![ + 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, + 6765, 10946, + ]; + for (i, &n) in expected_values.iter().enumerate() { + assert_eq!(fibbonacci(i), n); + } + } +} diff --git a/src/core/mod.rs b/src/core/mod.rs index f67f4f0..6a1ef73 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -1 +1,3 @@ pub mod rope; + +mod fibbonacci;