Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Упражнение: Числа Фибоначчи

Последовательность Фибоначчи начинается с [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.
  • Это упражнение — классическое введение в рекурсию.
  • Подтолкните студентов подумать о базовых случаях и о рекурсивном шаге.
  • Вопрос «При каких условиях эта функция вызовет панику?» — подсказка подумать о переполнении целых. Последовательность Фибоначчи растёт очень быстро!
  • Студенты могут предложить и итеративное решение, и это отличный повод обсудить компромиссы между рекурсией и итерацией (например, производительность и переполнение стека при глубокой рекурсии).