演習: コラッツ数列
コラッツ数列 は、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 }