The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding ones, usually starting with 0 and 1. The sequence starts with 0 and 1, and then each number is the sum of the two preceding ones.
You are given a function fibonacci(n: u32) -> u32
that takes a number n
and returns the n
-th number in the Fibonacci sequence.
Your job is to implement the function meeting the following requirements:
n
is 0, the function should return 0.n
is 1, the function should return 1.n
is greater than 1, the function should return the sum of the two preceding numbers.Here are some examples of how the behavior of the function should look like:
assert_eq!(fibonacci(0), 0); // Returns 0
assert_eq!(fibonacci(1), 1); // Returns 1
assert_eq!(fibonacci(2), 1); // Returns 1 + 0 = 1
assert_eq!(fibonacci(3), 2); // Returns 1 + 1 = 2
assert_eq!(fibonacci(4), 3); // Returns 2 + 1 = 3
assert_eq!(fibonacci(5), 5); // Returns 3 + 2 = 5
assert_eq!(fibonacci(6), 8); // Returns 5 + 3 = 8
assert_eq!(fibonacci(7), 13); // Returns 8 + 5 = 13
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { num if num == 0 => 0, num if num == 1 => 1, num => fibonacci(num - 1) + fibonacci(num - 2), }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { return 0 } if n == 1 { return 1 } fibonacci(n-1) + fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { if n > 1 { let mut a = 0; let mut b = 1; for i in (0..32).rev() { // Iterate from MSB to LSB let (a_sq, b_sq) = (a * a, b * b); let c = a_sq + b_sq; let d = b_sq + 2 * a * b; // or (2*a + b) * b if (n >> i) & 1 == 1 { // If the i-th bit of n is 1 (odd) a = c; b = d; } else { // If the i-th bit of n is 0 (even) a = d - c; // F(2k) = F(k) * (2*F(k+1) - F(k)) b = c; // F(2k+1) = F(k+1)^2 + F(k)^2 } } return a } return n}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence return match n { 0 => 0, 1 => 1, x => { let mut t: Vec<u32> = vec!(0, 1); for i in 2..=x as usize { t.push(t[i-2] + t[i-1]); println!("{:?}", t); } t[x as usize] } }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n<=1 { return n; } fibonacci(n-1)+fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { match n { 0 | 1 => n, _ => fibonacci(n - 1) + fibonacci(n - 2), }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 { n } else { fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 | 1 => n, _ => fibonacci(n-1) + fibonacci(n-2), }}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { 0 } else if n == 1 { 1 } else { fibonacci(n - 1) + fibonacci(n - 2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2), }}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } fibonacci(n - 1) + fibonacci(n - 2)}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequencen match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2), } }
pub fn fibonacci(n: u32) -> u32 { if n == 0 || n == 1 { return n; } fibonacci(n - 1) + fibonacci(n - 2)}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } let mut prev = 0u32; let mut curr = 1u32; for _ in 2..=n { let next = prev + curr; prev = curr; curr = next; } curr}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence let mut a = 0; let mut b = 1; for _ in 0..n { (a, b) = (b, (a + b)); } a}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { return 0; } let mut f0 = 0; let mut f1 = 1; for _ in 1..n { (f0, f1) = (f1, f0 + f1); } f1}
pub fn fibonacci(n: u32) -> u32 { if n == 0{ return 0 } if n == 1{ return 1 } let mut a = 1; let mut b = 1; for _ in 2..n{ (a, b) = (b, a + b) } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 { return n; }; fibonacci(n - 1) + fibonacci(n - 2)}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } fibonacci(n - 2) + fibonacci(n - 1)}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } fibonacci(n - 2) + fibonacci(n - 1)}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { return 0; } let mut n = n; let mut a = 0; let mut b = 1; while n > 1 { let t = a + b; a = b; b = t; n -= 1; } b}
pub fn fibonacci(n: u32) -> u32 { if n == 0 || n == 1 { n } else { fibonacci(n - 1) + fibonacci(n - 2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence let mut n_minus_2 = 0; if n == 0{ return 0; } let mut n_minus_1 = 1; if n == 1{ return 1; } let mut sum_n = 0; let mut count = 1; loop { sum_n = n_minus_2 + n_minus_1; count +=1; if count >= n { return sum_n; } n_minus_2 = n_minus_1; n_minus_1 = sum_n; }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { 0 } else if n == 1 { 1 } else { fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { return 0; } else { if n == 1 { return 1; } } return fibonacci(n-1) + fibonacci(n-2); }
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, _ => fibonacci(n - 1) + fibonacci(n - 2), }}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { return 0; } let mut a = 0; let mut b = 1; for _ in 2..=n { let next = a + b; a = b; b = next; } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 {return 0;} else if n == 1 { return 1; } let mut a = 0; let mut b = 1; let mut c = a + b; for _ in 2..n { a=b; b=c; c = a+b; } c as u32}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } return fibonacci(n-1) + fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { if n == 0 {return 0} if n == 1 {return 1} fibonacci(n-1) + fibonacci(n-2)}
use std::collections::HashMap;pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence let mut map: HashMap<u32, u32> = HashMap::new(); map.insert(0, 0); map.insert(1, 1); if n == 0 || n == 1 { return map[&n]; } let mut i = 2; while i <= n { map.insert(i, map[&((i-1))] + map[&((i-2))]); i += 1; } map[&n]}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { 0 } else if n == 1 { 1 } else { fibonacci(n - 1) + fibonacci(n - 2) }}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { return 0; } if n == 1 { return 1; } return fibonacci(n - 1) + fibonacci(n - 2);}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { return 0; } if n == 1 { return 1; } return fibonacci(n - 1) + fibonacci(n - 2);}
pub fn fibonacci(n: u32) -> u32 { if n > 0 { match n { 0 => 0, 1 => 1, _ => fibonacci(n - 1) + fibonacci(n - 2), } }else { 0 }}
const FIBONACCI_NUMBERS: [u32; 48] = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073,];pub fn fibonacci(n: u32) -> u32 { FIBONACCI_NUMBERS[n as usize]}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } let mut n_minus_1 = 1; let mut n_minus_2 = 0; for _ in 1..n { (n_minus_2, n_minus_1) = (n_minus_1, n_minus_1 + n_minus_2); } n_minus_1}
pub fn fibonacci(n: u32) -> u32 { if n < 2 { return n; } return fibonacci(n - 1) + fibonacci(n - 2);}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { 0 => 0, 1 => 1, _ => fibonacci(n - 1) + fibonacci(n - 2), }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 { return n; } let mut sum = 0; let mut cur = 1; let mut last = 0; for _ in 1..n { sum = last + cur; last = cur; cur = sum; } sum}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 { return n; } let mut sum = 0; let mut cur = 1; let mut last = 0; for _ in 1..n { sum = last + cur; last = cur; cur = sum; } sum}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { return 0; } if n == 1 { return 1; } let mut a = 0; let mut b = 1; for _ in 2..n+1 { let c = a + b; a = b; b = c; } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { 0 } else if n == 1 { 1 } else { fibonacci(n-2) + fibonacci(n-1) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { 0 } else if n == 1 { 1 } else { fibonacci(n-2) + fibonacci(n-1) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence (0..n).fold((0, 1), |(a, b), _| (b, a + b)).0}
pub fn fibonacci(n: u32) -> u32 { if n <2 {return n} fibonacci(n-1) + fibonacci(n-2)}