Computer >> Máy Tính >  >> Lập trình >> Python

Chuỗi Collatz trong Python

Giả sử chúng ta có một số nguyên positve n, chúng ta phải tìm độ dài của dãy Collatz của nó. Như chúng ta đã biết, dãy Collatz được tạo tuần tự trong đó n =n / 2 khi n chẵn, ngược lại n =3n + 1. Và dãy này kết thúc khi n =1.

Vì vậy, nếu đầu vào là n =13, thì đầu ra sẽ là 10 như [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] đây là chuỗi.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu num giống 0, thì
    • trả về 0
  • độ dài:=1
  • trong khi num không giống 1, hãy thực hiện
    • num:=(num / 2) khi num mod 2 bằng 0, ngược lại (3 * num + 1)
    • length:=length + 1
  • độ dài trả về

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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