Solution

fn fib(n: u32) -> u32 {
    if n < 2 {
        return n;
    } else {
        return fib(n - 1) + fib(n - 2);
    }
}

fn main() {
    let n = 20;
    println!("fib({n}) = {}", fib(n));
}
  • Walk through the solution step-by-step.
  • Explain the recursive calls and how they lead to the final result.
  • Discuss the integer overflow issue. With u32, the function will panic for n around 47. You can demonstrate this by changing the input to main.
  • Show an iterative solution as an alternative and compare its performance and memory usage with the recursive one. An iterative solution will be much more efficient.

More to Explore

For a more advanced discussion, you can introduce memoization or dynamic programming to optimize the recursive Fibonacci calculation, although this is beyond the scope of the current topic.