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 { let mut a: u32 = 0; let mut b: u32 = 1; for _ in 0..=n { a = a + b; b = a - b; } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n==0{ return 0; } let mut a = 0; let mut b = 1; for _ in 1..n { (a, b) = (b, a+b) } b}
pub fn fibonacci(n: u32) -> u32 { match n { 0..=1 => n, n => { let mut p = 1; let mut f = 1; for _ in 3..=n { (p, f) = (f, p + f) } f } }}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } let mut prev: u32 = 0; let mut current : u32 = 1; for _i in 2..=n { let next = prev.checked_add(current).expect("overflow when adding previous and current"); prev= current; current = next; } current}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 {return n} else {fibonacci(n-1) + fibonacci(n-2)} }
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, n => { let mut prev = 1; let mut fibo = 1; for _ in 3..=n { (prev, fibo) = (fibo, prev + fibo) } fibo } }}
pub fn fibonacci(n: u32) -> u32 { if n < 2 { return n; } let mut a = 0; let mut b = 1; for _ in 2..=n { let c = a + b; a = b; b = c; } b}
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 == 0{ return 0 } else if n == 1{ return 1 } else{ return fibonacci(n-1) + fibonacci(n-2); }}
pub fn fibonacci(n: u32) -> u32 { if n == 0 { 0 } else if n == 1 { 1 } else { let mut a = 0; let mut b = 1; let mut fib = 0; for _ in 2..=n { fib = a + b; a = b; b = fib; } fib }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { 0 => 0, 1 => 1, _ => { return fibonacci(n - 2) + fibonacci(n - 1); } }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1{ return n; } return 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 { // 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 match n { 0 => 0, 1 => 1, _ => { let mut fib = 0; let mut curr = 1; let mut prev = 0; let mut count = 2; while count <= n { fib = curr + prev; prev = curr; curr = fib; count += 1; } fib } }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n==0{ return 0 } else if n==1{ return 1 }else{ let mut prev_minus_two: u64 = 0; let mut prev_minus_one: u64 = 1; let mut index: u32 = 2; while index < n{ let tmp = prev_minus_one; prev_minus_one = prev_minus_one + prev_minus_two; prev_minus_two = tmp; index += 1; } return (prev_minus_two +prev_minus_one) as u32; }}
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 { 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 { // 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 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), }}