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 == 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)}
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 { // TODO: Implement the Fibonacci sequence 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 a = 0; let mut b = 1; (0..n).for_each(|_| (a, b) = (b, a + b)); a}
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 { let mut f = vec![0, 1]; for i in 2..=n { f.push(f[i as usize - 1] + f[i as usize -2]); } f[n as usize]}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence return match n { 0 => 0, 1 => 1, _ => 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 match n { 0..=1 => n, _ => fibonacci(n - 1) + fibonacci(n - 2) }}
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 // Recursive implementation. match n { 0 => 0, 1 => 1, _ => fibonacci(n-2) + fibonacci(n-1) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1 { return n } else { return fibonacci(n-2) + fibonacci(n-1) }}
pub fn fibonacci(n: u32) -> u32 { let mut num:u32 = 1; let mut num2:u32 = 0; let mut num3:u32 = 0; if n == 0 { return 0 } for _ in 1..n { num3 = num2; num2 = num; num += num3; } return num}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { 0 } else if n == 1{ 1 } else { 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 == 0 || n == 1 { n } else { fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { let mut num: [u32; 3] = [0, 1, 1]; if n <= 1 { num[n as usize] } else { for _i in 2..n { num = [num[1], num[2], num[1] + num[2]]; } num[2] } }
pub fn fibonacci(n: u32) -> u32 { let mut n1: u32 = 0; let mut n2: u32 = 1; let mut tmp: u32; if n == 0 { n1 } else if n == 1 { n2 } else { for _i in 2..=n { tmp = n1 + n2; n1 = n2; n2 = tmp; println!("{n2}") } n2 } }
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } let mut a = 0; let mut b = 1; let mut result = 0; for _ in 2..=n { result = a + b; a = b; b = result; } result}
pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } 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 { match n { 0 => return 0, 1 => return 1, _ => () }; fibonacci(n-1) + fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence let mut pre =1; let mut next =1; if n == 0{ 0 }else{ for _ in 2..n{ next += pre; pre = next - pre; } next }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => return 0, 1 => return 1, _ => () }; fibonacci(n-1) + fibonacci(n-2)}
pub fn fibonacci(n: u32) -> u32 { let mut fib_window = (0, 1); for _ in 0..n { let (curr, next) = fib_window; fib_window = (next, curr + next); } fib_window.0}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n <= 1 { n } else { /*let mut a = 0; //Fn-2 let mut b = 1; //Fn-1 let mut temp = 0; let mut i = 2; while i <= n { temp = a + b; a = b; b = temp; i += 1; } temp*/ let mut f = vec![0usize , 1usize]; let mut i = 2usize; while i <= n as usize { f.push(f[i-2] + f[i-1]); i += 1; } f[i-1] as u32 }}
pub fn fibonacci(n: u32) -> u32 { match n { 0 => 0, 1 => 1, x => { let mut r: u32 = 1; let mut _last: u32 = 0; for _i in 2..=x { let _n = r + _last; _last = r; r = _n; } r } } }
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence 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 { return 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 { match n { c if c == 0 => 0, c if c == 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, n => fibonacci(n-1) + fibonacci(n-2) }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 { return n; } else if n ==1{ return n; } else { return fibonacci(n-1) + fibonacci(n-2); }}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1 { return n; } let mut sum: u32 = 1; let mut a: u32 = 0; let mut b: u32 = 1; let mut i: u32 = 2; while i <= n { sum = a + b; a = b; b = sum; i += 1; } return sum;}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1 { return n; } // let mut sum: u32 = 1; // let mut a: u32 = 0; // let mut b: u32 = 1; // let mut i: u32 = 2; // while i <= n { // sum = a + b; // a = b; // b = sum; // i += 1; // } // return sum; fibonacci(n - 1) + fibonacci(n - 2)}
pub fn fibonacci(n: u32) -> u32 { // TODO: Implement the Fibonacci sequence if n == 0 || n == 1 { return n; } let mut sum: u32 = 1; let mut a: u32 = 0; let mut b: u32 = 1; let mut i: u32 = 2; while i <= n { sum = a + b; a = b; b = sum; i += 1; } return sum;}