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