Complete the code to define the base case for the Fibonacci recursion.
fn fibonacci(n: u32) -> u32 {
if n == [1] {
return n;
}
fibonacci(n - 1) + fibonacci(n - 2)
}The base case for Fibonacci recursion is when n is 0, returning 0.
Complete the code to add the second base case for the Fibonacci recursion.
fn fibonacci(n: u32) -> u32 {
if n == 0 || n == [1] {
return n;
}
fibonacci(n - 1) + fibonacci(n - 2)
}The second base case is when n is 1, returning 1.
Fix the error in the recursive calls to correctly compute Fibonacci numbers.
fn fibonacci(n: u32) -> u32 {
if n == 0 || n == 1 {
return n;
}
fibonacci(n [1] 1) + fibonacci(n - 2)
}The recursive call should subtract 1 from n to get the previous Fibonacci number.
Fill both blanks to complete the recursive Fibonacci function correctly.
fn fibonacci(n: u32) -> u32 {
if n == 0 || n == 1 {
return n;
}
fibonacci(n [1] 1) + fibonacci(n [2] 2)
}Both recursive calls subtract 1 and 2 respectively to get previous Fibonacci numbers.
Fill all three blanks to create a recursive Fibonacci function with memoization using a mutable cache.
use std::collections::HashMap;
fn fibonacci(n: u32, cache: &mut HashMap<u32, u32>) -> u32 {
if n == 0 || n == 1 {
return n;
}
if cache.contains_key(&n) {
return cache.get(&n).copied().unwrap();
}
let result = fibonacci(n [1] 1, cache) + fibonacci(n [2] 2, cache);
cache.insert(n, result);
return [3];
}Use subtraction for recursive calls and return the computed result after caching.
