تمرین: دنباله Collatz

The Collatz Sequence is defined as follows, for an arbitrary n1 greater than zero:

  • اگر ni = ۱ باشد، دنباله (sequence) در ni پایان می‌یابد.
  • اگر ni زوج باشد، آنگاه ni+۱ = ni/۲.
  • اگر ni فرد باشد، آنگاه ni+۱ = ۳ * ni + ۱.

به عنوان مثال، با شروع از ni = ۳:

  • ۳ فرد است، پس n2 = ۳ * ۳ + ۱ = 10;
  • ۱۰ زوج است، پس n3 = ۱۰ / ۲ = ۵;
  • ۵ فرد است، پس n4 = ۳ * ۵ + ۱ = 16;
  • ۱۶ زوج است، پس n5 = ۱۶ / ۲ = 8;
  • ۸ زوج است، پس n6 = ۸ / ۲ = 4;
  • ۴ زوج است، پس n7 = ۴ / ۲ = ۲;
  • ۲ زوج است، پس n۸ = ۱; و
  • دنباله به پایان می‌رسد.

یک تابع بنویسید تا طول دنباله Collatz برای یک n اولیه داده شده را محاسبه کند.

/// Determine the length of the collatz sequence beginning at `n`.
fn collatz_length(mut n: i32) -> u32 {
  todo!("این را پیاده‌سازی کن")
}

fn main() {
  todo!("این را پیاده‌سازی کن")
}