演習: フィボナッチ

フィボナッチ数列は [0, 1] から始まります。n > 1 の場合、次の数は直前の 2 つの数の和です。

n 番目のフィボナッチ数を計算する関数 fib(n) を書いてください。この関数はいつ panic しますか?

// 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));
}
  • この演習は、再帰の古典的な入門です。
  • 受講者に、ベースケースと再帰ステップについて考えるよう促してください。
  • 「この関数はいつ panic しますか?」という問いは、整数オーバーフローについて考えるためのヒントです。フィボナッチ数列は急速に大きくなります!
  • 受講者は反復的な解法も思いつくかもしれません。これは、再帰と反復のトレードオフ(例: パフォーマンス、深い再帰でのスタックオーバーフロー)について議論する絶好の機会です。