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 { if n <= 1 { return n; } let (mut a, mut b) = (0, 1); for i in 1..n { (a, b) = (b, a + b); } b}
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 { // TODO: Implement the Fibonacci sequence match n { n if n <= 1 => n, _ => fibonacci(n - 1) + fibonacci(n - 2), }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1{ return n } else { fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { let mut a : u32 = 0; let mut b : u32 = 1; for _ in 0..n { let c = b; b = a + b; a = c; } a }
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { n } else { fibonacci(n - 1) + fibonacci(n - 2) }}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { n } else { fibonacci(n - 1) + fibonacci(n - 2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1 { return n } fibonacci(n-1) + fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, n => fibonacci(n - 1) + fibonacci(n - 2), }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence match n { 0 => 0, 1 => 1, num => { let (mut a, mut b) = (0, 1); for _ in 0..n { let tmp = a + b; a = b; b = tmp; } a } }}
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==0{return 0}; if n==1{return 1}; let mut first = 1; let mut second = 0; let mut buffer: u32; for _ in 0..n{ buffer = second; second = first + buffer; first = buffer; } second}
pub fn fibonacci(n: u32) -> u32 { let mut f1: u32 = 0; let mut f2: u32 = 1; let mut fib: u32 = 0; if n <= 1 { return n } for _ in 1..n { fib = f1 + f2; f1 = f2; f2 = fib; } return fib}
pub fn fibonacci(n: u32) -> u32 { let mut first = 0; let mut second = 1; let mut result = 0; if n <= 1 { n } else { for _ in 1..n { result = first + second; first = second; second = result; } result }}
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, a => fibonacci(a - 1) + fibonacci(a - 2), }}
pub fn fibonacci(n: u32) -> u32 { let mut results = vec![0, 1]; for nb in 2..=n { results.push(results[(nb - 2) as usize] + results[(nb - 1) as usize]) } results[n as usize]}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence let n_usize = n as usize; match n { 0 => 0, 1 => 1, _ => { let mut suite: Vec<u32> = vec![0, 1]; for i in 2..=n_usize { suite.push(suite[i-2] + suite[i-1]); } suite[n_usize] } }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { 0 } else if n <= 2 { 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 if n <= 1{ return n; } let mut a = 0; let mut b = 1; for _ in 2..=n{ let tmp = a + b; a = b; b = tmp; } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1{ return n; } let mut a = 0; let mut b = 1; for i in 2..=n{ let tmp = a + b; a = b; b = tmp; } b}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1{ return n; } let mut fibs:Vec<u32> = Vec::new(); fibs.push(0); fibs.push(1); for i in 2..=n{ fibs.push(fibs[(i - 1)as usize] + fibs[(i - 2) as usize]); } fibs.pop().unwrap()}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, x => fibonacci(x - 1) + fibonacci(x - 2) }}
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 res = vec![0, 1]; for i in 0..=n-2 { res.push(res[i as usize] + res[(i+1) as usize]); } return res[n as usize]; }}
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 { if n == 0 { return 0; } if n == 1 { return 1; } let mut n1 = 0; let mut n2 = 1; let mut sum = 0; for _ in 2..=n { sum = n1 + n2; n1 = n2; n2 = sum; } sum}
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 sequence if n < 2 { return n }; fibonacci(n - 1) + fibonacci(n - 2)}
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 { 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 { 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), }}