Python中的Collat​​z序列

假设我们有一个正整数n,我们必须找到其Collatz序列的长度。我们知道Collatz序列是按顺序生成的,当n等于n时,n = n / 2,否则n = 3n +1。当n = 1时,该序列结束。

因此,如果输入像n = 13,则输出将是10,因为[13、40、20、10、5、16、8、4、2、1]是这些序列。

为了解决这个问题,我们将遵循以下步骤-

  • 如果num与0相同,则

    • 返回0

  • 长度:= 1

  • 而num与1不相同

    • 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