Add core::fibbonacci::fibbonacci()

This commit is contained in:
Matthew Gordon 2024-10-19 20:24:17 -03:00
parent 3873e5561f
commit b2ef8cc284
2 changed files with 31 additions and 0 deletions

29
src/core/fibbonacci.rs Normal file
View File

@ -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);
}
}
}

View File

@ -1 +1,3 @@
pub mod rope; pub mod rope;
mod fibbonacci;