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//2nếu chẵn, ngược lại3*num+1length += 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