Упражнение: Числа Фибоначчи
Последовательность Фибоначчи начинается с [0, 1]. Для n > 1 следующее число равно сумме двух предыдущих.
Напишите функцию fib(n), которая вычисляет n-е число Фибоначчи. При каких условиях эта функция вызовет панику?
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn fib(n: u32) -> u32 {
if n < 2 {
// Базовый случай.
return todo!("Реализуйте это");
} else {
// Рекурсивный случай.
return todo!("Реализуйте это");
}
}
fn main() {
let n = 20;
println!("fib({n}) = {}", fib(n));
}
This slide and its sub-slides should take about 15 minutes.
- Это упражнение — классическое введение в рекурсию.
- Подтолкните студентов подумать о базовых случаях и о рекурсивном шаге.
- Вопрос «При каких условиях эта функция вызовет панику?» — подсказка подумать о переполнении целых. Последовательность Фибоначчи растёт очень быстро!
- Студенты могут предложить и итеративное решение, и это отличный повод обсудить компромиссы между рекурсией и итерацией (например, производительность и переполнение стека при глубокой рекурсии).