Python中的Collatz序列
假设我们有一个正整数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)时nummod2为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