Çözüm

/// `n`'den başlayan collatz sekansının uzunluğunu belirle.
fn collatz_length(mut n: i32) -> u32 {
    let mut len = 1;
    while n > 1 {
        n = if n % 2 == 0 { n / 2 } else { 3 * n + 1 };
        len += 1;
    }
    len
}

fn main() {
    println!("Uzunluk: {}", collatz_length(11)); // 15 olmalı
}
  • Argüman n’in mut olarak işaretlendiğine dikkat edin; bu, fonksiyon içinde n’in değerini değiştirmenize imkân tanır. Değişkenlerde olduğu gibi, fonksiyon argümanları da varsayılan olarak değiştirilemezdir (immutable) ve değerlerini değiştirmek istiyorsanız mut eklemeniz gerekir. Bu, fonksiyonun nasıl çağrıldığını veya argümanın nasıl iletildiğini etkilemez.