演習: コラッツ数列

コラッツ数列 は、0より大きい任意の n1 に対して、次のように定義されます:

  • ni が 1 であれば、数列は ni で終了します。
  • ni が偶数であれば、ni+1 = ni / 2 となります。
  • ni が奇数であれば、ni+1 = 3 * ni + 1 となります。

たとえば、n1 = 3 から始めると:

  • 3 は奇数なので、n2 = 3 * 3 + 1 = 10;
  • 10 は偶数なので、n3 = 10 / 2 = 5;
  • 5 は奇数なので、n4 = 3 * 5 + 1 = 16;
  • 16 は偶数なので、n5 = 16 / 2 = 8;
  • 8 は偶数なので、n6 = 8 / 2 = 4;
  • 4 は偶数なので、n7 = 4 / 2 = 2;
  • 2 は偶数なので、n8 = 1; そして
  • 数列は終了します。

与えられた初期 n に対するコラッツ数列の長さを計算する関数を 作成してください。

// 著作権 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

/// Determine the length of the collatz sequence beginning at `n`.
fn collatz_length(mut n: i32) -> u32 {
  todo!("ここを実装してください")
}

fn main() {
    println!("Length: {}", collatz_length(11)); // should be 15
}