Вправа: Послідовність Коллатца

Послідовність Коллатца визначається наступним чином, для довільного 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.

/// Визначте довжину послідовності колатів, яка починається з `n`.
fn collatz_length(mut n: i32) -> u32 {
  todo!("Реалізуйте це")
}

#[test]
fn test_collatz_length() {
    assert_eq!(collatz_length(11), 15);
}

fn main() {
    println!("Довжина: {}", collatz_length(11));
}