Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ลำดับ Collatz ใน Python

ภาพรวม

ลำดับ Collatz เริ่มจากจำนวนเต็มบวก n:

  • ถ้า n คู่ → n = n/2
  • ถ้า n คี่ → n = 3n + 1
  • ทำซ้ำจน n = 1

โจทย์หาความยาวของลำดับ (รวม n เริ่มต้นและ 1 สุดท้าย)

ตัวอย่าง n=13

ลำดับ: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 → ความยาว 10

โค้ด Python

class Solution:
    def solve(self, num):
        if num == 0:
            return 0
        length = 1
        while num != 1:
            num = (num // 2) if num % 2 == 0 else (3 * num + 1)
            length += 1
        return length

ob = Solution()
print(ob.solve(13))

หมายเหตุสำคัญ

  • ใช้ // (integer division) แทน / เพื่อให้ได้ int
  • Collatz conjecture: เชื่อว่าลำดับจะถึง 1 สำหรับทุก n > 0 (ยังไม่พิสูจน์)
  • เวลาไม่แน่นอน ขึ้นอยู่กับ n

ผลลัพธ์

10