Alıştırma: Collatz Sekansı

Collatz sanısı, sıfırdan büyük herhangi bir n1 için aşağıdaki şekilde tanımlanır:

  • Eğer ni 1 ise, dizi ni'de sonlanır.
  • Eğer ni çift ise, o zaman ni+1 = ni / 2.
  • Eğer ni tek sayı ise ni+1 = 3 * ni + 1.

Örneğin, n1 = 3 ile başalrsak:

  • 3 tek sayıdır, dolayısıyla n2 = 3 * 3 + 1 = 10;
  • 10 çift sayıdır, dolayısıyla n3 = 10 / 2 = 5;
  • 5 tek sayıdır, dolayısıyla n4 = 3 * 5 + 1 = 16;
  • 16 çift sayıdır, dolayısıyla n5 = 16 / 2 = 8;
  • 8 çift sayıdır, dolayısıyla n6 = 8 / 2 = 4;
  • 4 çift sayıdır, dolayısıyla n7 = 4 / 2 = 2;
  • 2 çifttir, bu yüzden n8 = 1; ve
  • sekans sonlandırılır.

Belirli bir başlangıç n için collatz sekansının uzunluğunu hesaplayan bir fonksiyon yazın.

/// `n`'den başlayan collatz sekansının uzunluğunu belirle.
fn collatz_length(mut n: i32) -> u32 {
  todo!("Bunu gerçekleştirin (implement)")
}

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

fn main() {
    println!("Length: {}", collatz_length(11));
}