Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 콜라츠 시퀀스

<시간/>

양의 정수 n이 있다고 가정하고 Collatz 시퀀스의 길이를 찾아야 합니다. 우리가 알고 있듯이 Collatz 시퀀스는 n이 n =3n+ 1일 때 n =n/2일 때 순차적으로 생성됩니다. 그리고 이 시퀀스는 n =1일 때 끝납니다.

따라서 입력이 n =13과 같으면 출력은 [13, 40, 20, 10, 5, 16, 8, 4, 2, 1]이 시퀀스이므로 10이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • num이 0과 같으면
    • 0을 반환
  • 길이:=1
  • num이 1과 같지 않으면 do
    • num :=(num / 2) num mod 2가 0이면 그렇지 않으면 (3 * num + 1)
    • 길이 :=길이 + 1
  • 반환 길이

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

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))

입력

13

출력

10