假设我们有一个正整数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