Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Dãy Collatz trong Python

Cho số nguyên dương n, tìm độ dài dãy Collatz. Quy tắc: nếu chẵn → n = n/2, nếu lẻ → n = 3n+1. Dãy kết thúc khi n = 1.

Ví dụ: n = 13 → dãy [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] độ dài 10.

Các bước giải quyết

  • Nếu num == 0 → trả về 0
  • length = 1
  • Khi num != 1:
    • num = num//2 nếu chẵn, ngược lại 3*num+1
    • length += 1
  • Trả về length

Ví dụ mã 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))

Đầu vào

13

Đầu ra

10