You've already forked comprehensive-rust
mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-12-23 15:01:49 +02:00
Add speaker notes to Fibonacci exercise (#2898)
The speaker notes should prompt a deeper discussion around the exercise by calling out the non-obvious integer overflow pitfall and encourage instructors to explore alternative implementations with students, moving beyond a surface-level recursive solution.
This commit is contained in:
@@ -23,3 +23,15 @@ this function panic?
|
|||||||
|
|
||||||
{{#include exercise.rs:main}}
|
{{#include exercise.rs:main}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
- This exercise is a classic introduction to recursion.
|
||||||
|
- Encourage students to think about the base cases and the recursive step.
|
||||||
|
- The question "When will this function panic?" is a hint to think about integer
|
||||||
|
overflow. The Fibonacci sequence grows quickly!
|
||||||
|
- Students might come up with an iterative solution as well, which is a great
|
||||||
|
opportunity to discuss the trade-offs between recursion and iteration (e.g.,
|
||||||
|
performance, stack overflow for deep recursion).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|||||||
@@ -3,3 +3,21 @@
|
|||||||
```rust,editable
|
```rust,editable
|
||||||
{{#include exercise.rs:solution}}
|
{{#include exercise.rs:solution}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|||||||
Reference in New Issue
Block a user